叮当猫咪
将显式指针传递给第一个元素,并将数组维度作为单独的参数。例如,要处理int的任意大小的2-d数组: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);