在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/