【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)
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)
相关文章推荐
- c语言数组和指针差别——定义和申明不同造成的影响
- C/C++中字符指针数组及指向指针的指针的含义
- 数组名与指针的不同
- C语言中 数组与指针的不同 。 char[] 与 char*
- sizeof(数组名)和sizeof(指针名)的结果是不同的
- c语言数组和指针差别——定义和申明不同造成的影响
- 数组和指针何时等同,何时不同?
- 挑战30天C++入门极限-C/C++中字符指针数组及指向指针的指针的含义
- C/C++中字符指针数组及指向指针的指针的含义
- 深入理解:指针数组,数组指针,指向指针的指针,数组名含义
- c和cpp中的那些不同(指针和数组)
- 指针和数组的“不同”
- 指针和数组访问方式的不同
- 指针和数组名的区别 char *str 和 char str[]的不同之处
- c/c++中的字符指针数组,指向指针的指针的含义
- 数组与指针典型面试题分析--深入理解指针含义
- 以指针方式访问数组几种不同形式输出语句解析
- 一场由插入排序引发的血案--从sizeof看int型数组和int型指针的不同
- C/C++中字符指针数组及指向指针的指针的含义
- 指针与数组不同的存储区域