MC中有关内存分配和编译过程的MCQ

在这里,我们将看到有关内存分配和编译过程的一些MCQ问题。

问题1-以下代码的输出是什么-

#include <stdio.h>
#include <stdlib.h>
int main() {
   union my_union {
      int i;
      float f;
      char c;
   };
   union my_union* u;
   u = (union my_union*)malloc(sizeof(union my_union));
   u->f = 20.60f;
   printf("%f", u->f);
}

选项-

  • 垃圾值

  • 20.600000

  • 语法错误

  • 20.6

说明

使用联合,我们可以使用相同的内存位置来保存多种类型的数据。联合的所有成员使用具有最大空间的相同内存位置。在这里使用float,其值为20.60f = 20.600000。因此答案B是正确的。

问题2-编译过程的正确顺序是什么-

选项-

  • 汇编器,编译器,预处理器,链接

  • 编译器,汇编器,预处理器,链接

  • 预处理器,编译器,汇编器,链接

  • 汇编器,编译器,链接,预处理器

说明-

选项C是正确的。首先,它对代码进行预处理,然后对其进行编译,然后创建汇编级代码或目标代码,然后进行链接。

问题3-以下哪个陈述是正确的?

选项-

  • 在链接期间,代码#include被stdio.h替换

  • 在预处理期间,代码#include被stdio.h替换

  • 在执行期间,代码#include被stdio.h替换

  • 在编辑代码期间,#include将替换为stdio.h

说明-

选项B是正确的。首先,它创建预处理的代码,在该阶段,它将#include语句中提到的文件中存在的代码附加到代码中,然后发送给编译器。

问题4-使用fflush()函数的目的-

选项-

  • 刷新所有流和指定的流

  • 仅刷新指定的流

  • 刷新输入输出缓冲区

  • 这是无效的库函数

说明-

此功能仅用于刷新输出流。它清除输出缓冲区,并将输出发送到控制台。选项A是正确的。

问题5-指出以下代码的错误-

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
   char* ptr;
   *ptr = (int*)malloc(30);
   strcpy(ptr, "ABC");
   printf("%s", ptr);
   free(ptr);
}

选项-

  • strcpy()语句中的错误

  • * ptr =(int *)malloc(30)中的错误;

  • free(ptr)错误

  • 没错

说明-

选项B是正确的。在这里,这使指针产生了整数,而没有强制转换