c - 如何在 C 中返回一个字符串数组?

标签 c arrays string function pointers

比如我在主文件中有

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/

相关文章:

python - 在 Python 中将 URL 字符串转换为普通字符串(%20 到空格等)

c++ - : 0xC0000005: Access violation reading location 0xccccccc0 with recursive vector search 中 0x770115de 的未处理异常

ios - UIImage 数组中数百张图片 - 内存泄漏

javascript - 如何分别存储对象数组中的重复值

Swift 无法构造参数类型为 Int64 的字符串

c - 如何计算 CRC32 校验和?

c - 如何为不同的方法以不同的名称调用相同的文件?

c - 写入数组直至数组满

c - stdin 在 Linux 中是否被视为字符设备?

php foreach 将多维数组打印到表中?