二、填空题
8.13 以下程序段的输出结果是_____。
int *var,ab;
ab=100; var=&ab; ab=*var+10;
printf("%d\\n",*var);
答案:100
8.14 以下程序的输出结果是_____。
int ast(int x,int y,int *cp,int *dp)
{ *cp=x+y;
*dp=x-y;
}
main()
{ int a,b,c,d;
a=4; b=3;
ast(a,b,&c,&d);
printf("%d %d\\n",c,d);
}
答案:7 1
8.15 若有定义:char ch;
(1) 使指针p可以指向变量ch的定义语句是_____。
答案:char *p=&ch;
(2) 使指针p可以指向变量ch的赋值语句是_____。
答案:p=&ch;
(3) 通过指针p给变量ch读入字符scanf函数调用语句是_____。
答案:scanf("%c",*p);
(4) 通过指针p给变量ch的赋字符的语句是_____。
答案:ch=*p;
5) 通过指针p输出ch中字符的语句是_____。
答案: printf("%c",*p);
8.16 若有如图8.5所示五个连续的int类型的存储单元并赋值如图,且p和s的基类型皆为int,p已指向存储单元a[1]。
(1) 通过指针p,给s赋值,使其指向最后一个存储单元a[4]的语句是____。
答案: s=p+3;
(2) 用以移动指针s,使之指向中间的存储单元a[2]的表达式是____。
答案: s=s-2;
(3) 已知k=2,指针s已指向存储单元a[2],表达式*(s+k)的值是____。
答案: 50
(4) 指针s已指向存储单元a[2],不移动指针s,通过s引用存储单元a[3]的表达式是____。
答案: *(a+1)
5) 指针s已指向存储单元a[2],p指向存储单元a[0],表达式s-p的值是____。
答案: 2
6) 若p指向存储单元a[0],则以下语句的输出结果是____。
for(i=0; i<5;i++) printf("%d ",*(p+i));
printf("\\n");
答案:10 20 30 40 50