尝试此操作时出现下标编译器错误:
int **arrays;
// allocate and initialize it....
int pos1 = 0;
int pos2 = 1;
int value = (*arrays[pos1])[pos2];
如果括号中的部分取消对int*
指针的引用,为什么数组访问不合法?
最佳答案
括号中的部分是一个int
。首先,arrays[pos1]
生成一个指针 (int*
),然后您将其取消引用(通过前缀 *
运算符)。因此,(*arrays[pos1])
是一个简单的 int
,而不是指针。
如果您的目标只是访问多维数组中的某个位置,请忘记 *
,只需使用:
arrays[pos1][pos2]
关于C访问多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14950123/