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) Compiler → Assenbler → Preprocessor → Linking
(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) 错误:在*ptr = (int *) malloc(30)
;
(c) 错误:在free(ptr)
;
(d) 没有错误
解释 :
赋值从指针生成整数而无需强制转换。选项(b)是正确的。
6.为什么使用calloc()
函数?
(a) 分配指定的字节数
(b) 分配指定数量的字节并将它们初始化为零
(c) 增加或减少指定内存块的大小并在需要时重新分配它
(d) 调用指定的内存块来执行。
解释 :
-
malloc()
:分配指定的字节数。 -
realloc()
:增加或减少指定内存块的大小。如果需要,重新分配它。 -
calloc()
:分配指定数量的字节并将它们初始化为零。 -
free()
:将指定的内存块释放回系统。
所以,选项(b)是正确的。