您的位置:首页 > 编程语言 > C语言/C++

【C++沉思录】数组指针的不同含义

2013-08-18 16:34 363 查看
int a[5][10];
cout << "a = " << a << endl;
cout << "a + 1 = " << a + 1 << endl;
cout << "&a + 1 = " << &a + 1 << endl;

输出:



 
分析:
a和&a都是数组a[5][10]的首地址。但是它们的类型不同,a是int a[10]的类型,而&a是a[5][10]的类型。而指针运算中的“1”代表指针类型的长度。所以
a + 1 = 0012FEB8 + sizeof(int)*10 = 0012FEE0
&a + 1 = 0012FEB8 + sizeof(int)*10*5 = 0012FE80

更抽象的说,如果定义一个数组int a[M1][M2][...][Mn],那么a+1等于a首地址+M2*M3*...*Mn*sizeof(int);而&a + 1等于a首地址+M1*M2*...*Mn*sizeof(int)

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: