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

#include<stdio.h>voidmain(){int(*p)[4];//一个指向有4个元素int数组的指针pinta[4]={11,22,33,44};p=&a... #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) 打底是什么意思~~~
展开
 我来答
风若远去何人留
推荐于2017-09-22 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20403 获赞数:450164
专业C/C++软件开发

向TA提问 私信TA
展开全部
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]。
hainier2010
2010-12-07 · 超过17用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:44.1万
展开全部
**p相当于*(*(p+0)+0),如果打印**p结果是11,
**(p+1)相当于*(*(p+1)+0),指向的值已经不再数组内了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
63278146
2010-12-07 · TA获得超过204个赞
知道小有建树答主
回答量:504
采纳率:100%
帮助的人:211万
展开全部
这越界了 *(p+1)相当于指向a[2][0]但是a[2][0]并不存在
*(*(p+0)+1)就输出了 a[1] 这个理解了你就懂
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wsnsyy
2015-09-10 · 超过22用户采纳过TA的回答
知道答主
回答量:92
采纳率:100%
帮助的人:27.7万
展开全部
後面是要在%d位置要对应显示的数据
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jiangchi68
2010-12-07 · 超过27用户采纳过TA的回答
知道答主
回答量:89
采纳率:50%
帮助的人:44.3万
展开全部
输出的是一个随机数啦
表示的是一个数组指针
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式