1.以下代码的输出是什么?
#include
#include
int main()
{
union test {
int i;
float f;
char c;
};
union test* t;
t = (union test*)malloc(sizeof(union test));
t->f = 20.60f;
printf("%f", t->f);
return 0;
}
(a)垃圾价值
(b)20.600000
(c)语法错误
(d)20.60
解释 :
联合提供了一种使用相同内存位置的有效方法。 Union的所有成员都使用具有最大空间的相同内存位置。
在这里,使用float f
f = 20.60f = 20.600000
。因此,选项(b)是正确的。
2.正确的编译顺序是什么?
(a)汇编器→编译器→预处理器→链接
(b)编译器→Assenbler→预处理器→链接
(c)预处理器→编译器→汇编器→链接
(d)汇编器→编译器→链接→预处理器
解释 :
选项(c)是正确的。
3.在预处理期间,代码#include
被替换为文件stdio.h
的内容。哪个是对的?
(a)在链接过程中,代码#include
被stdio.h
替换
(b)是
(c)在执行期间,代码#include
被stdio.h
替换
(d)在编辑代码中, #include
替换为stdio.h
解释 :
预处理通过将预处理指令#include
替换为文件stdio.h
的内容来扩展和增强C编程语言。
选项(b)。
4.为什么要使用fflush()
库函数?
(a)冲洗所有流和指定的流
(b)仅冲洗指定的流
(c)刷新输入/输出缓冲区
(d)无效的库函数
解释 :
按照定义,在C中使用fflush(stdin): fflush()
通常仅用于输出流。其目的是清除(或刷新)输出缓冲区,并将缓冲的数据移动到控制台(如果是stdout)或磁盘(如果是文件输出流)。
选项(a)是正确的。
5.指出错误->
#include
#include
#include
int main()
{
char* ptr;
*ptr = (int*)malloc(30);
strcpy(ptr, "RAM");
printf("%s", ptr);
free(ptr);
return 0;
}
(a)错误:在strcpy()
语句中。
(b)错误:in *ptr = (int *) malloc(30)
;
(c)错误:在free(ptr)
;
(d)没有错误
解释 :
赋值从指针进行整数运算,而不进行强制转换。选项(b)是正确的。
6.为什么要使用calloc()
函数?
(a)分配指定的字节数
(b)分配指定的字节数并将其初始化为零
(c)增加或减少指定内存块的大小,并在需要时重新分配它
(d)调用指定的内存块以执行。
解释 :
-
malloc()
:分配指定的字节数。 -
realloc()
:增大或减小指定内存块的大小。如果需要,请重新分配它。 -
calloc()
:分配指定的字节数并将其初始化为零。 -
free()
:将指定的内存块释放回系统。
因此,选项(b)是正确的。