c语言 printf("**(p+1) %d\n",**(p+1)); 后面是什么意思啊?

#include<stdio.h> void main() { int (*p)[4];//一个指向有4个元素int数组的指针p int a[4]={11,22,33,44}; p=&a; printf("**(p+1) %d\n",**(p+1)); } 后面**(p+1)输出的到底是什么啊? 输出结果看似是首地址,但是如果改成p+2 就编程了另外的不知是什么的数 求解**(p+1) 打底是什么意思~~~

第1个回答  2020-05-18
printf("**(p+1)
%d\n",**(p+1));
这是一个输出函数,默认会打印在输出终端上,即执行的
dos窗口

参数为"**(p+1)
%d\n",**(p+1),所以printf会先打印字符串"**(p+1)
",
然后根据格式字符%d,
将**(p+1)的值以整型形式打印出其值。
最终输出
换行符
'\n'。
这里的**(p+1),打印为整型,说明p为int
**型,而**(p+1)就是p上偏移一个int*类型空间后,取出其指向的值,并在这个值的地址上取出一个整型值。这个值就是最终值。等效于
数组形式p[1][0]。
第2个回答  2019-08-10
你好!
这越界了
*(p+1)相当于指向a[2][0]但是a[2][0]并不存在
*(*(p+0)+1)就输出了
a[1]
这个理解了你就懂
如果对你有帮助,望采纳。
第3个回答  2020-09-26
**p相当于*(*(p+0)+0),如果打印**p结果是11,
**(p+1)相当于*(*(p+1)+0),指向的值已经不再数组内了!
第4个回答  2020-05-31
这越界了
*(p+1)相当于指向a[2][0]但是a[2][0]并不存在
*(*(p+0)+1)就输出了
a[1]
这个理解了你就懂
相似回答
大家正在搜