arrays - 二维动态数组指针访问

标签 arrays c multidimensional-array

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/

相关文章:

matlab - MATLAB 中的高效 3D 逐元素运算

python - 找出元素是否存在于python的多维数组中

c++ - 使用 memset 而不是 for 循环来初始化 int 时出现段错误**

JavaScript Array.filter() 函数

c - malloc 没有相应的 free 是否总是会产生内存泄漏?

c - 在 C 中初始化嵌套结构 - 最佳实践

c# - Testand - 通过使用 C DLL 的 C# 包装器使用 C# DLL

ruby - 最多 n 的组合

arrays - 数组中的空格和换行符(Shell脚本)

c++ - vector 的初始化