求解释一段C语言程序的运行结果,程序及结果如图所示

2025-05-10 03:06:19
推荐回答(4个)
回答1:

子函数a的形参是指针——int *p,使得调用子函数时输入的是地址——&x:指的是x的地址;
子函数的用处是输出x地址+1的值,printf("%d\n",*++p)输出垃圾值
++p,是无论执行什么语句都先加+1再执行语句
相当于:
p=p+1;
printf("%d\n",*p);

回答2:

打印出来应该是个很大的未知数,因为a(&x)传入的参数是x的地址,p是一个指针,所以p=x的地址 而不是20,*++p指代的是先将p做加的操作 也就是将x的地址做加1操作,然后再取加1后地址里面的值,而你现在只设置了x的地址上的值为20,而x加1的地址上的值是个未知数,所以答案是一个未知数;

回答3:

在函数a中, printf 打印*++p,意思就是打印*(++p), 也就把传过来的x的地址加一后,打印这个变化后的地址的内容,里面乱码。

回答4:

在函数a( *p);函数参数*p指针变量,函数实现中的 *++p等于*(++p)实际上一个地址,++p 等于p =p+1;而后取地址。