c指针的问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 17:11:47
int b[]={6,7,8,9,10};
int *p;
下列程序段输出结果为:
p=b;
*(p+2)+=2;
printf("%d%d\n",*p,*(p+2));
}
书上答案是6,10
能帮我分析一下吗?

首先p=b后,p就指向的数组的第一个位置上,即此时*p=6,*(p+2)+=2这行执行如下操作:p+2先将指针从p开始向后移动两个位置,即指向数据8,*(p+2)则取出这个地址中存放的值),然后再将这个值加上2,即这个位置上的值变为10。因为p始终没变,所以依然指向6,而p+2个位置上的元素由8变为了10,所以得到了那个答案