———————二维数组,数组指针———————
?二维数组在内存中的存放方式和一维数组完全相同
?下表把二维数组抽象成了行列形式方便理解
?a[0]指向第一行首元素地址
?a指向第一行的首地址
?所以a地址和a[0]地址相同,因为起点相同
?a[0]+1往右偏移
?a+1往下方向偏移
简单理解为
?a+n控制行
?a[0]+n控制列(相当于*a+n)
? 数组指针指向二维数组
int a[2][2] = {1, 2, 3, 4}; int main() { int(*p)[2] = a; cout << p[0][0] << endl; p = new int[2][2]; cout << p[0][0] << endl; }
?数组指针指向动态分配的二维数组
int a[2][2] = {1, 2, 3, 4}; int main() { int(*p)[2] = a; cout << p[0][0] << endl; p = new int[2][2]; cout << p[0][0] << endl; }
———————End———————