p = (int *)malloc(m * n * sizeof(int));
如果我使用p
作为二维动态数组,如何访问里面的元素?
最佳答案
如果您可以依靠您的 C 实现来支持可变长度数组(可选功能),那么一个很好的方法是将 p
声明为指向(可变长度)数组的指针而不是指向 int
:
int (*p)[n] = malloc(m * sizeof(*p)); // m rows, n columns
然后你使用普通的双索引访问元素,就像你声明一个普通的二维数组一样:
p[0][0] = 1;
p[m-1][n-1] = 42;
int q = p[2][1];
最广泛使用的 C 实现确实支持 VLA,但 Microsoft 是一个明显的异常(exception)。
关于arrays - 二维动态数组指针访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72424425/