c - 在 C 中将多维数组作为函数参数传递

标签 c function multidimensional-array

C中,当我不知道数组的维数时,我可以将多维数组作为单个参数传递给函数吗?数组将会是什么?

此外,我的多维数组可能包含字符串以外的类型。

最佳答案

将显式指针传递给第一个元素,并将数组维度作为单独的参数。例如,要处理任意大小的二维 int 数组:

void func_2d(int *p, size_t M, size_t N)
{
  size_t i, j;
  ...
  p[i*N+j] = ...;
}

这将被称为

...
int arr1[10][20];
int arr2[5][80];
...
func_2d(&arr1[0][0], 10, 20);
func_2d(&arr2[0][0], 5, 80);

同样的原理适用于高维数组:

func_3d(int *p, size_t X, size_t Y, size_t Z)
{
  size_t i, j, k;
  ...
  p[i*Y*Z+j*Z+k] = ...;
  ...
}
...
arr2[10][20][30];
...
func_3d(&arr[0][0][0], 10, 20, 30);

关于c - 在 C 中将多维数组作为函数参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29955018/

相关文章:

c++ - 将 unsigned int 添加到 unsigned int*

c - 使用sizeof、strlen等进行重复计算

php - Firebug 控制台,给出错误 "function not defined"

arrays - 寻找所有最大的序列

php - 包含动态子数组的数组;只捕获最后一个子数组

从 C 中的文本文件复制所需的字符串

c - 使用 BST 对结构数组进行排序的函数的时间复杂度是多少?

function - 为什么 vba 要我为函数/子调用使用赋值?

c++ - 绘图功能的表现

python - 如何在Python中重写这个嵌套的for循环?