这是一个“热门”问题,所以我已经检查了类似的主题,但仍然没有解决我的问题。
我如何声明二维数组来保存“字符串”——我需要字符数组的数组 AFAIK——并将它作为 5 个函数的参数一个接一个地使用,我可以通过引用传递它并更新动态内容,因此以下功能可以对其进行比较。 (我可能会得到 10 个“字符串”甚至 空 数组,所以我想用动态数组正确地做到这一点,因为数组内容因系统而异)。
"string"=> C 风格字符串又名字符数组。麦克斯伦 < 32;
C 解决方案会更令人讨厌,但如果 vector 可以工作,为什么不呢。
最佳答案
一种可能的C语言解决方案如下:
char **p_strings = calloc(num_strings, sizeof(*p_strings));
for (i = 0; i < num_strings; i++)
{
// Allocate storage for the i-th string (always leave room for '\0')
p_strings[i] = calloc(len_string[i]+1, sizeof(*p_strings[i]));
}
...
// Call a function
my_function(p_strings, num_strings);
您需要记住 free
完成后所有这些数据。
如果您需要改变字符串的长度或字符串的数量,您将不得不进行一些相当痛苦的重新分配。所以如果你在 C++ 中工作,你应该只使用 std::vector<std::string>
.
std::vector<std::string> strings;
strings.push_back("Foo");
strings.push_back("Bar");
...
my_function(strings);
您甚至可以使用 c_str()
为每个元素获取指向 C 风格字符串的常量指针.
关于c++ - 在 C/++ 中的函数之间传递具有动态大小的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7191266/