首页 > 解决方案 > 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) {
      |        ^

是否有正确的语法来实现这一点,还是我做错了?

标签: cfunctionpointersreturn-type

解决方案


您需要按如下方式定义函数:

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

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


推荐阅读