gpt4 book ai didi

c++ - 在 C/++ 中的函数之间传递具有动态大小的二维数组

转载 作者:太空宇宙 更新时间:2023-11-04 01:13:18 27 4
gpt4 key购买 nike

这是一个“热门”问题,所以我已经检查了类似的主题,但仍然没有解决我的问题。

我如何声明二维数组来保存“字符串”——我需要字符数组的数组 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com