C语言关于数组和指针的问题

#include<stdio.h>main(){inta[]={2,4,6,8},*p=a,i,*j;for(i=0;i<4;i++)a[i]=*p++;printf("... #include<stdio.h>
main()
{
int a[]={2,4,6,8},*p=a,i,*j;
for(i=0;i<4;i++) a[i]=*p++;
printf("%d\n",a[2]);
}
此程序*p指针指向a数组的第一个元素2,*p++岂不是移动了指针指向4,那么a[0]是不是就等于4了,相应的a[2]等于8,但是实际上答案给的等于6,为什么呢?
展开
 我来答
在菩萨山写故事的林雕
2019-02-26 · TA获得超过939个赞
知道小有建树答主
回答量:362
采纳率:79%
帮助的人:106万
展开全部

++位于*p之后表示先取值再移位.

a[0]=*p++; 此时*p的值是2, 等把2赋给a[0]后, p才指到4上.

回复追问:

  1. c语言里没有连等式.

  2. ++运算符使用起来很有技巧性, 建议多看些相关示例.

追问
你好我还有点问题,a[0]=*p++是不是等同于a[0]=*p=*p+1呢,如果是的话,赋值好同等级岂不是从右向左运算的吗?(我是初学者很多都不懂)
冯小气气
2019-02-26 · 知道合伙人IT服务行家
冯小气气
知道合伙人IT服务行家
采纳数:98 获赞数:239
八年编程经验,公司核心技术人员。

向TA提问 私信TA
展开全部

你可以这样理解.++运算符真的是很让人头疼。

for(i=0;i<4;i++) a[i]=*p++;

for(i=0;i<4;i++) 
{
    a[i]=*p;
    p++;
 }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式