gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:26:47 25 4
gpt4 key购买 nike

我使用动态内存分配在 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[])中,方括号中的维度不能为空,也无法使用动态变化的参数进行初始化。

您能告诉我这个问题的解决方案吗?

最佳答案

In the function Sum(int *x[]), the dimension in the square bracket cant be left empty

当然可以;在函数参数声明的上下文中,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] ) 

关于c - 传递使用动态内存分配创建的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26641212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com