注册 登录
编程论坛 C++教室

*iter++的问题

qq51099008 发布于 2011-08-20 20:45, 394 次点击
为啥C++primer上说的
*iter++等效于*(iter++)

但是实际写段代码
    int x[]={1,2,3,4};
    int *p=x;
    cout<<*p++;
的输出结构是1而不是2
cout<<*++p的结果才是2

难道是我理解错了书上说的?
2 回复
#2
naruto012011-08-20 20:54
你试试*(p++),看结果不就知道等价不了?
#3
xg56992011-08-20 22:53
不是指针问题,是前置自加的问题

j++是先返回j后自加 属于前置自加
++j是先自加后返回j 属于后置自加
两者的主要区别在于返回值
比如
int j=0,a=0;
a=++j;
那么a是1,j也是1;
a=j++;
那么a是0,但j的值也是1
也就是说无论++j或者j++ j的值始
终会是j=j+1的结果;
指针也是一样的道理
1