C语言题目,为什么是B,第2个输出Z怎么还是20,那它自加*Z指向谁了

发布时间:2024-05-26 06:00 发布:上海旅游网

问题描述:

#include <stdio.h>
void prt (int *x, int *y, int *z)
{printf("%d,%d,%d\n",++*x,++*y,*(z++));}
main()
{int a=10,b=40,c=20;
prt (&a,&b,&c);
prt (&a,&b,&c);}
A)11,42, 31
12,22,41
B)11,41,20
12,42,20
C)11,21,40
11,21,21
D)11,41,21
12,42,22

问题解答:

第一回执行函数后 *(z++) 是由Z指向的地址增加了4个字节 而C里存的值20并没有改变,第二后指行后和第一回是一样的C中的值并没有被改变,所以C中还是20

输出结果与运算符的优先级有关,()的优先级高于*
printf("%d,%d,%d\n",++*x,++*y,*(z++));与以下语句等价
printf("%d,%d,%d\n",++*x,++*y,*z);}
z=z+1;
自增的不是*z而是z。
z时参数,临时指针变量。

热点新闻