c语言常见笔试题及答案
9. 两段代码共存于一个文件,编译时有选择的编译其中的一部分,请问如何实现? 答案:有两种简单的办法可以实现:
在源码中使用条件编译语句,然后在程序文件中定义宏的形式来选择需
要的编译代码。
在源码中使用条件编译语句,然后在编译命令的命令中加入宏定义命令
来实现选择编译。
10.数据结构指针传给函数,函数能访问数据单元,但不能修改实际的内容,如何实现? 答案:定义为指向常量的指针,这样指针所指的数据结构中的内容就不会被改变。如: const 类型 *p 或 类型 const *p
11. 在头文件中定义静态变量,可能产生什么问题?
答案:在使用了该头文件的每个c程序文件中都单独存在一个该静态变量,这样造成空间的浪费并且很容易引起错误。因此建议不要在头文件中定义任何变量。
12.malloc()与 calloc()的区别?
答案:
1)参数上的区别
malloc (size_t size);
calloc (size_t n , size_t size);
malloc分配一块size大小的内存块,而calloc分配一个n*size大小的内存块
2)返回内存块的状态不同
malloc分配的内存块没有被清零,而calloc分配的内存块是清了零的。但是建议在使用内存时,如果需要初始化,则最好自己按照需要来进行初试化,不要依赖函数的实现说明。
13.寄存器变量可不可以访问其地址?可否是全局变量?在什么场合使用寄存器变量? 答案:这些问题都与编译器的实现有关,建议不要声明全局变量为寄存器变量,即使是局部变量都最好不要声明其为寄存器变量,现在的编译器在优化时都会较为合理的安排寄存器变量的使用,而人为的安排有时会造成优化的低效。
14."\n" '\n' 的区别?
答案:前者是一个字符串并且以’/0’结束,而后者只是一个简单的字符。
15.包含预定义头文件< > 和" "的区别?
答案:< >只在指定的目录里寻找被包含文件;" "先在当前目录下查找 ,再在指定目录下查找;通常<>方式用于系统的头文件,而一般用户的头文件用" "的方式。
16.strunt S_A{
int a[10];
};
void f()
{
int i;
strunt S_A *s_ptr;
for (i=0,i<10,i++)