二维数组与指针
1 二维数组可以看作是多个一维数组
2 数组名就是数组的首地址
int arr[3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
int* parr00 = &arr[0][0];
int* parr0 = arr[0];
cout<<arr[1][2] << endl;
cout << *(parr00 + 6) << endl;
cout << *(parr0+6) << endl;
数组指针
本质上还是一个指针,指向数组的指针
int a[4] = { 1, 2, 3, 4 };
int(*p)[4] = &a;
int a[4] = { 1, 2, 3, 4 };
int(*p)[4] = &a;
cout << *p[1] << endl;
int arr[3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
int(*parr)[3][4] = &arr;
cout << " " << (*parr)[1][2] << endl;
cout << " " << *(*((*parr) + 1) + 2) << endl;
指针数组
本质上还是一个数组,存储指针的数组
综合练习
#include <iostream>
using namespace std;
typedef int I;
typedef int(*B)[4];
int main()
{
I a[4] = { 1, 2, 3, 4 };
int b[4] = { 5,6,7,8 };
int c[4] = { 9,10,11,12 };
int(*pa)[4] = &a;
int(*pb)[4] = &b;
int(*pc)[4] = &c;