C++输出数组

来源:百度知道 编辑:UC知道 时间:2024/06/30 04:54:22
#include<iostream.h>
void main()
{
int a[3]={45,25,63};
int*c=a;
/*

cout<<c<<" "<<*c++<<endl;//第一种方法
cout<<c<<" "<<*c++<<endl;
cout<<c<<" "<<*c++<<endl;
*/
cout<<c<<" "<<*c++<<endl<<c<<" "<<*c++<<endl<<c<<" "<<*c++<<endl;//第二种方法
}
第一种方法输出为:
0x0013FF78 45
0x0013FF7C 25
0x0013FF80 63
Press any key to continue
第二种方法输出为:
0x0013FF80 63
0x0013FF7C 25
0x0013FF78 45
Press any key to continue
为什么两种方法结果会是反着的啦?第二种分明用的是*c++,为什么地址是减着走的呢?问题很低级,请兄弟伙指教一下,莫笑,呵。
两种方法是分别编译的哈,不会有溢出这样的错。

cout是自右向左运算的。但是输出是按照你给的顺序输出。所以最先输出的地址是最后的。

楼上的解释正确。

如果不信,可以运行以下语句研究一下:

int i=3;
cout<<i++<<"\t"<<i++<<"\t"<<i++<<endl;

运行结果是:

5 4 3