二维数组名和数组指针可以当做一个东西用,但两者之间的含义是不同的。
二维数组名是一个指向数组中所有元素的指针,而数组指针是一个行指针。体现在sizeof()上的不同。
#include <iostream>
using namespace std;
int main()
{
// a是一个二维数组名,指向一个二维数组
int a[2][3] = {{1,2,3},{4,5,6}};
// a所占的内存为24,即6*4
cout<<sizeof(a)<<endl;
// 输出为4
// a:&a[0] a+1:&a[1] *(a+1) : a[1] = &a[1][0]
// **(a+1) = a[1][0]
cout<<**(a+1)<<endl;
// 输出为3
// a:&a[0] *a:a[0]:&a[0][0] *a+2:&a[0][2]
// *(*a+2):a[0][2]
cout<<*(*a+2)<<endl;
// 数组指针
int (*b)[3] = a;
// 数组指针可以当做二维数组名用
cout<<**(b+1)<<endl;
cout<<*(*b+2)<<endl;
cout<<sizeof(b)<<endl;
}