C访问多维数组

标签 c arrays pointers multidimensional-array

尝试此操作时出现下标编译器错误:

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/

相关文章:

c++ - ASCII 艺术 - C/C++ 中的固定边框

需要全面清晰的 NOP sled 技术解释

c - 理解 pthread_cond_wait() 和 pthread_cond_signal()

c++ - 传递接受 void * 的成员函数

c++ - 如何使用 C++ 中的插入函数将整数插入到字符串中?

在 C 中创建固定长度的文本文件?

java - IntelliJ "result of inputstream.read is ignored"- 如何修复?

java - 从字符串中提取每个单独的数字

arrays - 计算排序数组与循环移位交集的快速算法

父/子类的 C++ 复制构造函数问题