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是正确的。在这里,这使指针产生了整数,而没有强制转换