C函数的返回类型正确吗



我在函数中使用一个字符串数组,声明如下

char (*array)[PATH_MAX] = malloc (1000 * sizeof *array);

正在分配1000个大小为PATH_MAX(1024(的字符指针。

我希望函数返回特定的数据结构,即返回指针array。但我无法选择正确的退货类型。

warning: returning 'char (*)[1024]' from a function with return type 'int' makes integer from pointer without a cast [-Wint-conversion]

我知道我不能用int作为返回类型,但char**也不起作用。

warning: returning 'char (*)[1024]' from a function with incompatible return type 'char **' [-Wincompatible-pointer-types]

我曾尝试使用char (*)[1024]作为返回类型,但它给了我一般的C错误消息,这让我相信我没有使用正确的语法。

error: expected identifier or '(' before ')' token
38 | char (*)[1024] read_dir (char *path) {
|        ^

实现这一点有正确的语法吗?还是我只是做错了?

您需要定义如下函数:

char (*read_dir(char *path))[PATH_MAX] {

这将返回类型指定为指向char *的大小为PATH_MAX的数组的指针。

typedef的时间

typedef char arr1k_char[1000];
arr1k_char *foo(int n) {
arr1k_char *x = malloc(n * sizeof *x);
return x;
}

https://ideone.com/Cqxa61

最新更新