gpt4 book ai didi

c - 处理指针数组

转载 作者:太空宇宙 更新时间:2023-11-04 08:44:30 24 4
gpt4 key购买 nike

我正在尝试创建一个结构,该结构将一个 char 指针数组作为其成员之一,但在尝试设置/访问该数组的元素时遇到了问题。每个 char 指针将指向一个 malloc 缓冲区。这是当前的结构。

struct rt_args {
long threadId;
char (*buffers)[];
FILE* threadFP;
};

当我尝试通过

访问缓冲区元素时
char *buffer = malloc(100);

struct rt_args (*rThreadArgs) = malloc( sizeof(long) +
(sizeof(char *) * (numThreads)) +
sizeof(FILE*)
);
rThreadArgs->buffers[0] = buffer;

我收到错误消息“无效使用具有未指定边界的数组”。我事先不知道数组的大小是多少,所以我不能硬编码它的大小。 (我试过取​​消引用缓冲区 [0] 并添加第二个索引?我觉得这好像是我犯的语法错误)

最佳答案

你不能有没有大小的数组,就像错误消息所说的那样,至少不能在结构的中间。在您的情况下,您可能会考虑指向指向 char 的指针的指针?然后你可以使用例如初始数组的 malloc 和需要时的 realloc

有点像

char **buffers;

然后做

buffers = malloc(sizeof(buffers[0]) * number_of_pointers_needed);

然后您可以像使用“普通”指针数组一样使用缓冲区:

buffers[0] = malloc(length_of_string + 1);
strcpy(buffers[0], some_string);

关于c - 处理指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22205450/

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