比如我在主文件中有
1) char ** array[NUMBER];
2) array = build_array();
在导入的文件中
char ** build_array()
{
char ** array[NUMBER];
strings[0] = "A";
strings[1] = "B";
return (char *) strings;
}
但是,在主文件的第 2 行,我收到错误:“从类型 'char **' 分配给类型 'char **[(unsighed int)NUMBER]' 时类型不兼容
我做错了什么?任何建议或意见将不胜感激。提前谢谢你。
最佳答案
C 语言中的字符串似乎有些混淆。在 C 语言中,char
的空终止序列被视为字符串。通常用char*
表示。
I just want to call the
build_array()
function and return the array of strings
您几乎不能返回一个数组,也不能返回一个指向本地数组的指针。但是,您可以将该数组及其 大小
作为参数传递给 build_array
,然后填充它。
void build_array( char* strings[], size_t size )
{
// make sure size >= 2 here, based on your actual logic
strings[0] = "A";
strings[1] = "B";
}
...later called as:...
char *array[NUMBER];
build_array(array, NUMBER);
备选方案是返回指向全局或静态分配数组的指针,这将使您的函数不可重入。你现在可能不关心这个,但这是不好的做法,所以我建议你避免走那条路。
关于c - 如何在 C 中返回一个字符串数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7631054/