问题标题:
对于下列程序,正确的是voidf(int*p){*p=5;}intmain(void){inta,*p;a=10;p=&a;f(p);printf(“%d”,(*p)++);return0;}A.5x05x05B.6x05x05C.10x05x05D.11
问题描述:
对于下列程序,正确的是
voidf(int*p)
{
*p=5;
}
intmain(void)
{
inta,*p;
a=10;
p=&a;
f(p);
printf(“%d”,(*p)++);
return0;
}
A.5x05x05B.6x05x05C.10x05x05D.11
李利回答:
voidf(int*p)
{
*p=5;
}
intmain(void)
{
inta,*p;
a=10;
p=&a;
f(p);
printf("%d",(*p)++);
return0;
}
A.5B.6C.10D.11
答案是A
因为这个是按地址调用,所以在子函数f()中已经改变了a的值,而打印时是先输出a的值,之后再对a进行增1操作
你可以在return0;前加上一句printf("%d",*p);就会发现在5的基础上新输出了一个数字6.
点击显示
其它推荐
热门其它推荐