读书人

新手for循环有关问题

发布时间: 2013-03-26 09:54:34 作者: rapoo

新手求助,for循环问题
本帖最后由 emzx9527 于 2013-03-23 20:45:57 编辑 程序如下:
int main()
{
int a[]={3,4,6,8};
int b;
int *p=a;
int i=0;
a[i]=(*p)++;
//b=(*p)++;
printf("%d,%d,%d\n",i,a[i],b);



return 0;
}
这个程序里面当把a[i]换成b时,得出的结果为什么不一样呢?
[解决办法]

引用:
引用:引用:明白你的意思了。最主要的是i++的意思。
这样:
int i=0;
int j=i++;
这样运算之后,j的值为0 ,而i的值为1;
a[i]=(*p)++;这句话虽然没有直接改变a[i]的值,但是其改变了指针p所指向的元素,从而改变了a[i]的值。
把a[i]=(*p)++换成b=……
你还是没看明白我写的,第一种情况,是因为++改变了指针指向的元素,a[0]=4,而你输出的a[0],所以输出4。
第二种情况,(*p)++相当于a[0],++之后a[0]的确是等于4的,但是a[0]++的值不变。

读书人网 >C++

热点推荐