main() {int a[5]={2,4,6,8,10},*p,**k; p=a; k=&p; printf("%d",*(p++)); printf("%d\n",**k); }

为什么结果是24... 为什么结果是24 展开
 我来答
百度网友f6435b1
2011-09-16 · TA获得超过1533个赞
知道小有建树答主
回答量:167
采纳率:0%
帮助的人:57.9万
展开全部
int a[5]={2,4,6,8,10},*p,**k;
p=a;//p指向a数组,p保存了a数组的首地址。a[0]是数组的首元素,所以*p的值就是a[0]的值。
k=&p;//k指针指向p,k保存了p的地址。(k可以成为指针的指针)
printf("%d",*(p++)); //表达式“*(p++)”整体的值相当于*p的值,就是a[0]的值。
printf("%d\n",**k); //上面语句"*(p++)"已经使指针p往后以一个位置,即此时p指针指向a[1],保存了a[1]的地址。*p就是a[1]的值为4.
//k指针指向p,k保存了p的地址,*k就是指针p保存的值,即a数组的首地址。所以**k就是*p的值,即a[1]的值为4
结果24 是2 和 4的 组合而成的..
百度网友daf46de
推荐于2018-03-13 · TA获得超过325个赞
知道小有建树答主
回答量:209
采纳率:0%
帮助的人:218万
展开全部
因为printf("%d",*(p++));这一句输出2,是因为p指向的是数组的第一个元素,所以输出2
在输出2以后,由于有一个p++,所以p就指向数据的第二个元素,**k就是取出p所指向元素的值,而p指向的是数组的第二个元素,所以就输出4了
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
初学C
2011-09-16 · TA获得超过320个赞
知道小有建树答主
回答量:199
采纳率:51%
帮助的人:74.2万
展开全部
如上楼所说 结果24非 一个整形数 是2 和 4的 组合而成.. 第一次输出的是 2 然后 P++ ; *k=(等于)P
P被++了 所以第二个是4 合起来24
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
豆芽二号00
2011-09-16 · 超过16用户采纳过TA的回答
知道答主
回答量:119
采纳率:0%
帮助的人:37万
展开全部
*(p++)=2
**k=4
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式