一:选择题
1:转义字符
2:函数的调用与传值
调用自定义函数时有两种数据传递方式:
(1)值传递:
实参向形参的数据传递是“值传递”,单项传递,只能由实参传向形参,不能由形参传向实参。
(2)址传递:
用数组元素作实参时,向形参变量传递的是数组元素的值,而用数组名作函数参数时,向形参(数组名或指针变量)传递的是数组首元素的地址。
(1)用数组名作函数参数,应该在主调函数和被调用函数分别定义数组.
(2)实参数组与形参数组类型应一致,不一致,结果将出错。
(3)数组名代表数组首元素的地址。传递过程中,只是将实参数组的首元素的地址传给形参数组名。
(4)形参数组可以不指定大小,在定义数组时在数组名后面跟一个空的方括号。
3:scanf函数的输入
scanf输入结构体数组时要使用结构体数组的下标;
二:填空题
4:数组与指针的“加减法”:
(1):数组名的加减法:
数组名加一个数表示数组从下标开始移动,加的是下标,始终是该数组中的元素(不超过数组大小);
(2):指针的加减法:
定义一个数组a[ ],再定义一个指针p,,则&a+1中的1指的是一整个数组;
即该指针的指向已经超出了该数组;但&a[ ]+1中的1指的是一个数组元素。
5:二维数组的定义:(易错)
一般二维数组的定义是
int a[2][3]={{1,2,3},
{4,5,6}}
用的都是花括号;(其中花括号也可以省略,且数组中的行标在定义时也可以省略,但在使用时不能省略);如果定义时使用()代替{ },那要考虑里面的逗号运算符,即从左向右运算,但只取最右面的值。
三:简答题
6:
char*const p 中的const限定的是指针p,所以p是常量指针;
char const*p 中的const限定的是(*p),即指针p指向一个常量;
const char *p 与char const *p同义。
总的来说,const限定的是const后面的内容。
7
结构体struct:
结构体的所有成员占用同一段内存,修改一个成员会影响其余所有成员,结构体占用的内存大于等于所有成员的内存的总和(通过各成员的内存大小和偏移量来计算);
共同体union:
共同体占用的内存等于占用内存最大的成员所占用的内存,共同体使用了 内存覆盖技术,同一时刻只能保存一个成员的值,如果对新的成员赋值,就会把原来的成员的值覆盖掉。