gpt4 book ai didi

c - 正确的返回语句和函数类型

转载 作者:行者123 更新时间:2023-12-04 02:29:42 24 4
gpt4 key购买 nike

我正在试验 malloc,我正在尝试创建一个动态二维数组,我知道第二维的大小,并且我正在这样分配内存:

int (*arr)[SIZE] = NULL;
arr = malloc(sizeof(arr[SIZE]) * 10);

我的问题是,是否可以将上述代码放入一个函数中,并返回分配内存的地址,如果可以,类型应该是什么?

编辑:我知道另一种分配和返回指针的方法。

提前致谢。

最佳答案

对于初学者来说,malloc 的参数令人困惑

arr = malloc(sizeof(arr[SIZE]) * 10);

看来你的意思是

arr = malloc(sizeof( *arr ) * 10);

也就是说,您正在尝试动态分配 int[10][SIZE] 类型的数组。

更准确地说,在 malloc 的调用中用作参数的记录

arr = malloc(sizeof(arr[SIZE]) * 10);

是正确的,但非常困惑。最好不要将这样的记录用于 sizeof 运算符。

函数声明看起来像

int ( *allocation( size_t n ) )[SIZE];

或者你可以引入一个 typedef 名称,比如

typedef int ( *Array2D )[SIZE];

然后像这样声明函数

Array2D allocation( size_t n );

其中 n 对应于您使用的值 10。即使用参数,您可以为数组维度指定除 10 以外的任何数字。

关于c - 正确的返回语句和函数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65036639/

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