声明一个数组
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];
我该如何解决这个问题?
答案 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);