问题描述
我在函数内部使用了这样的字符串数组
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;
}