微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C函数的正确返回类型?

如何解决C函数的正确返回类型?

我在函数内部使用了这样的字符串数组

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

分配大小为PATH_MAX(1024)的1000个char指针。

我希望函数返回特定的数据结构,即返回指针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] {

这将返回类型指定为指向PATH_MAX的{​​{1}}大小的数组的指针。

,

typedef的时间

typedef char arr1k_char[1000];

arr1k_char *foo(int n) {
    arr1k_char *x = malloc(n * sizeof *x);
    return x;
}

https://ideone.com/Cqxa61

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。