我们都知道一维数组的我们都很熟悉:
int a[5] = { 1,2,3,4,5 };
int*p = a;
int i, j;
这里p指针是int型指针,这里的赋值是将数组a的内存中的首地址啊a【0】在内存中的位置,地址传给p,这样p就能代表a数组了
这时我们可以用平p【1】,p【2】……依次代表数组a【1】,a【2】……;
接下来我们看二维数组,
int b[2][3] = { 1,2,3,21,22,23};
int* p2 = b[0];
这里p2指针是int型指针,这里的赋值是将数组b在内存中的首地址(b【0】【0】在内存中的位置,地址)传给p2,这样p2中的值就是b【0】【0】的地址。
此时我们有
// p2[0] = b[0][0] ,p2[1] = b[0][1] ,p2[2] = b[0][2]
// p2[3] = b[1][0] ,p2[4] = b[0][1] ,p2[5] = b[0][2]
#include<iostream>
using namespace std;
int main()
{
int a[3][2] = {
{
1,2},{
3,4},{
5,6}};
int (*p)[2];//数字大小是第二维的 //不要忘了括号
p = a; //
cout << *(*(p + 0) + 0)<<endl;
//不要忘了两个括号,两次间接引用指针
cout << *(*(p + 0) + 1) << endl;
cout << *(*(p + 1) + 0) << endl;
cout << *(*(p + 1) + 1) << endl;
return 0;
}