[英]Passing 2 dimensional array created using dynamic memory allocation
我使用动态内存分配在C中创建了一个二维数组。
int **x;
x=(int **)malloc(2*sizeof(int));
for(i=0;i<k;i++)
x[i]=(int*)malloc(K*sizeof(int));
现在,让我们将此数组作为参数传递给名为Sum的函数。
Sum(x);
在函数Sum(int *x[])
,方括号中的尺寸不能留空,并且我也无法使用动态变化的参数进行初始化。
您能给我看看解决这个问题的方法吗?
在函数
Sum(int *x[])
,方括号中的尺寸不能留空
当然可以; 在函数参数声明的上下文中, T a[N]
和T a[]
解释为T *a
; 所有三种声明a
作为指针T
,而不是作为阵列T
。
无论如何,您都需要将数组维作为单独的参数传递,以便Sum
可以正确地完成其工作,但是您当然可以将x
声明为int *x[]
甚至int **x
。
如果使用的是支持VLA的C99编译器或C2011编译器,则可以使用运行时变量来调整数组大小:
int Sum( size_t cols, int *x[cols] )
甚至
int Sum( size_t rows, size_t cols, int x[rows][cols] )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.