繁体   English   中英

传递使用动态内存分配创建的二维数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM