char * myFunction () {
char sub_str[10][20];
return sub_str;
}
void main () {
char *str;
str = myFunction();
}
错误:从不兼容的指针类型返回
谢谢
最佳答案
C 中的字符串数组可以与 char**
或 char*[]
一起使用。但是,您不能像在函数中那样返回存储在堆栈中的值。如果要返回字符串数组,则必须动态保留它:
char** myFunction() {
char ** sub_str = malloc(10 * sizeof(char*));
for (int i =0 ; i < 10; ++i)
sub_str[i] = malloc(20 * sizeof(char));
/* Fill the sub_str strings */
return sub_str;
}
然后main可以这样获取字符串数组:
char** str = myFunction();
printf("%s", str[0]); /* Prints the first string. */
编辑:由于我们分配了 sub_str,我们现在返回一个可以在 main 中访问的内存地址
关于c - 如何从函数返回字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4085372/