废话不多说,请看笔试题:
1、如何在C语言中初始化一个字符数组。
最简单的方法是char array[];。更为全面的初始化方式为char array[5]={'a','s','d','f','3'};或者char array[5]={"china"};或者char array[2][10]={"china","shanghai"};
2、如何在C中为一个数组分配空间。
栈的形式:char array[5]; 堆的形式:char *array; array=(char *)malloc(5); //c++: array[]=new array(5);
3、如何初始化一个指针数组。
首先区分指向数组的指针和存放指针的数组。
指向数组的指针:char (*array)[5]; 指向一个存放五个字符数组的指针。
存放指针的数组:char *array[5]; 存放五个字符型指针的数组。
char *array[2]={"china","shanghai"};存放两个分别指向“china”和“shanghai”的指针的数组。
4、如何定义有15个整形指针元素的数组。
int *array[15];
5、s[10]的另外一种表达方式是什么。
s[0]=*s; s[10]=*(s+10);
6、如何让局部变量具有全局生命周期。
static修饰就可以了,但只是延长了生命周期,范围并没有扩大,除非把这个变量定义在函数体外的静态区,不过那样就变成全局变量了。
7、C中的常量字符串应在何时定义。
一种是预处理阶段,用#define 定义;还有就是使用const修饰词。
8、如何在.c文件中引用对方的变量。
为全局变量添加extern修饰词。
9、使用malloc之前需要做什么准备工作。
需要这段空间的指针是否存在,若不存在,则定义一个指针用了被赋值,还要清楚返回什么类型的指针,分配的内存空间是否合理;如果指针已经存在,那么将新空间的地址赋值给指针之前,先判断指针是否为NULL,如果不是则要free一下,否则原有的空间就会被浪费,或者出错,free完就按前一种情形考虑。
10、realloc函数在使用上需要注意什么。
这个函数的作用是重新分配空间大小,返回的头指针不变,只改变空间大小。变大不能大到内存溢出,变小,部分空间会被征用,原有数据不存在;如果想挪作他用,需要先free一下。
11、如何定义Boolean变量的TRUE和FALSE。
#define TRUE 1;
#define FALSE 0;
12、C语言的volatile的含义是什么,使用时会对编译器有什么影响。
volatile本意是易变的。由于访问寄存器的速度快过RAM,所以编译器一般会做减少存取外部RAM的优化,但有可能会读脏数据。当要求使用volatile声明变量时,系统总是重新从所在内存中读取,而不是使用寄存器中备份的数据。