gpt4 book ai didi

c - c中的双数组语法

转载 作者:太空宇宙 更新时间:2023-11-04 05:43:39 25 4
gpt4 key购买 nike

这个问题可能看起来非常简单,但我如何在 c 语言中声明一个返回 double 组的函数。例如

char myfunction(int a, int b)
{
...
char d[a][b];
...
return d;
}

但它似乎不起作用(如果响应可以避免'malloc'和'free'用法,那么理解这些基本用法可能会更有帮助)

最好的,纽本

最佳答案

But it doesn't seem to work (if the response could avoid the 'malloc' and 'free' usage, it could be more helpful to understand those kinds of basic usage)

嗯,你不能,因为你打算返回一个一旦函数返回就无效的指针。该数组被声明为具有自动存储持续时间,因此,一旦函数返回,对它的所有引用都是无效的。您不能从 C 中的函数返回数组。

如果您需要在函数中填充数据,则可以返回一个 char**,您可以从函数中使用 malloc

char **foo(int cols, int rows) {
char **ret = malloc(rows * sizeof(char*));
if(!ret)
return ret;

for(int i = 0; i < rows; ++i) {
ret[i] = malloc(cols);
/* error checking again for malloc,
call free() on pointers 0...i upon failure.
memset to 0 if you like */
}

return ret;
}

您现在可以在返回值上使用多维数组语法。

char **p = foo(10, 20);

// p[j] returns a pointer to char, p[j][k] returns a char
char elem = p[j][k];

关于c - c中的双数组语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11619480/

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