对于下列程序,正确的是

问题描述:

对于下列程序,正确的是
void f(int *p)
{
*p = 5;
}
int main(void)
{
int a,*p;
a = 10;
p = &a;
f(p);
printf(“%d”,(*p)++);
return 0;
}
A.5 \x05\x05B.6 \x05\x05C.10\x05\x05 D.11

void f(int *p)
{
*p = 5;
}
int main(void)
{
int a, *p;
a = 10;
p = &a;
f(p);
printf("%d", (*p)++);
return 0;
}
A.5B.6C.10D.11
答案是A
因为这个是按地址调用,所以在子函数f()中已经改变了a的值,而打印时是先输出a的值,之后再对a进行增1操作
你可以在return 0;前加上一句 printf("%d", *p);就会发现在5的基础上新输出了一个数字6.