选择题
30.
有以下程序:
void fun(int*p1,int*p2,int*s)
{
s=(int*)malloe(sizeof(int));
*s=*p1+*(p2++);}
main(){
int a[2]={1,2},b[2]={10,20},*s=a;
fun(a,b,s);
printf("%d\n",*s);}
程序运行后的输出结果是______。
A、
10
B、
11
C、
2
D、
1
【正确答案】
D
【答案解析】
主函数中定义指针s指向数组a,调用fun函数,首先是实参传给形参,因此p1指向a,p2指向b,s指向a,即*s的值为1。流程到调用函数fun执行,首先更改s的指向为新分空间的首地址,表达式*s=*p1+*(p2++),取p1指向数据位1,加上p2指向数据10,p2后移,存放到s指向的空间中11,流程结束,形参s和p1,p2撤销,存入s指向空间的数据丢失,主函数输出s指向数据仍然是1。
提交答案
关闭