指向二维数组的指针

时间:2012-02-09 20:31:12

标签: c++ arrays pointers

声明一个数组

char a[10][20] = {...}

我找不到创建指针x的正确方法,以便a[1][3]例如x[1][3]

我试过了:

// try 1
char * x; x = &a[0][0];
// try 2
char * x; x = a;
// try 3
char ** x; x = a;
// try 4
char ** x; x = &a[0][0];

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

你可以说char (*p)[20] = a;,它使p成为指向20个字符数组的指针。这意味着++p跳到下一个20的切片,并且您有10个切片(每个切片由表达式p[i]表示,其中0≤ i <10。

答案 1 :(得分:0)

a的值为char (*)[20]类型,即指向char数组20的类型指针。

您可以这样声明此类型的对象x

char a[10][20] = { ... };
char (*x)[20] = a;

x[3][14] = 42;  // you can then access x elements like with a

答案 2 :(得分:0)

您可以通过这种方式使用指向二维数组的常规指针

int arr[10][20];
int* p = (int*) arr; or p = &arr[0][0];
//the mean to set or get value of the member [i][j]
*(p+20*i +j) = 777;
int a = *(p+20*i+j);