gpt4 book ai didi

C++ 如何使用和传递 3 维字符数组?

转载 作者:IT王子 更新时间:2023-10-29 06:03:48 25 4
gpt4 key购买 nike

我正在尝试构建一个 char 数组来存储函数的返回值。在以下函数中,数据存储在 *****valv** 中。如何构建外部变量来访问数据?

int credis_lrange(REDIS rhnd, const char *key, 
int start, int end, char ***valv)
{
int rc;

if ((rc = cr_sendfandreceive(rhnd, CR_MULTIBULK, "LRANGE %s %d %d\r\n",
key, start, end)) == 0)
{
*valv = rhnd->reply.multibulk.bulks;
rc = rhnd->reply.multibulk.len;
}

return rc;
}

解决方案:

char **elements;

int size = credis_lrange(this->redis,"object_2",600,603,&elements);

for (int i=0; i<size;i++) {
cout << "element: " << elements[i] << endl;
}

谢谢大家!

最佳答案

char ***element[size];

不完全是一个 3D 数组,而是一个 size 元素的数组,这些元素的指针指向指向 char 的指针。

使用以下任一方法:

char e[ D1 ][ D2 ][ D3 ]; /* D1, D2, D3 are integral constants */
char *e[ D2 ][ D3 ];
char e[][ D2 ][ D3 ];

此外,您可以通过简单地将 e 指定为函数的参数来传递它。

进一步阅读后,该参数似乎并不是真正的 3D 数组,而是指向 C 风格字符串数组的指针。请注意,语法可能相同,但意图不同。

在这种情况下,您需要做两件事:

  • 指定要在数组中存储的字符串数
  • 对于每个字符串
    • 分配内存
    • 复制字符串数据到char数组

最后,您将把这个字符串数组的地址传递给 credis_lrange 函数。

关于C++ 如何使用和传递 3 维字符数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2188559/

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