填空题.
1、 若有定义:char ch;
(1) 使指针p可以指向变量ch的定义语句是__________。
(2) 使指针p指向变量ch的赋值语句是__________。
(3) 通过指针p给变量ch读入字符的scanf函数调用语句是__________。
(4) 通过指针p输出ch中字符的语句是__________。
2、 如有下图所示五个连续的int类型的存储单元并赋值如图,且p和s的基类型皆为int,p已指向存储单元a[1]。
a[0]
a[1]
a[2]
a[3]
a[4]
10
20
30
40
50
P↑
(1) 通过指针p,给s赋值,使其指向最后一个存储单元a[4]的语句是_________。
(2) 通过移动指针s,使之指向中间的存储单元a[2]的表达示_________。
(3) 已知k=2,指针s已指向存储单元a[2],表达示*(s+k)的值是_____。
(4) 指针s已指向存储单元a[2],不移动指针s,通过s引用存储单元a[3]的表达示_________。
(5) 指针s指向存储单元a[2],p指向存储单元a[0],表达示s-p的值是_________。
(6) 若p指向存储单元a[0],则以下语句的输出结果是_________。
for(i=0;i〈5;i++〉
printf(“%d”,*(p+i));
printf(“\n”);
3、以下程序段的输出结果是_______。
char s[20]=“goodgood!”,*sp=s;
sp=sp+2;
sp=“to”;
puts(s);
判断题。
1、 char *p[10];定义了一个指向字符数组的指针变量。
2、 将指向函数的指针作为函数的参数,虽然可以提高效率,但是容易造成混乱,所以不符合结构化程序设计的原则。
3、 数组名实际上是此数组的首地址,所以数组名相当于一个指针变量。
4、 若定义数组a[2][3],则a+1和*(a+1)完全等价。
5、 函数的形参为一个数组,则调用此函数时将数组名作为对应的实参。