gpt4 book ai didi

C如何修改其他结构内部结构的内存

转载 作者:行者123 更新时间:2023-12-04 02:56:08 27 4
gpt4 key购买 nike

如果我有两个结构:

typedef struct{
unsigned int time;
double rate;

}quote;

typedef struct{

unsigned int freeSlots;
unsigned int end;
unsigned int start;
unsigned int currSize;
unsigned int maxSize;
unsigned int startAt;
//unsigned int currIndex;
quote quoteBuffer[1];

}cbuf;

我想创建一个函数来修改 cbuf 中 quoteBuffer 数组的大小,具体我该怎么做呢?我尝试了几种方法,但到目前为止都没有奏效。我一直返回到相同的格式:

quote *newQuoteBuffer = malloc(sizeof(quote) * newSize);

如果我在某处已经有一个现有的 cbuf(例如,我们将其称为“a”,其中 a 是指向 cbuf 的指针):

a->quoteBuffer = newQuoteBuffer;

但显然这是行不通的。有什么提示吗?

最佳答案

这个:

quote quoteBuffer[1];

应该是:

quote *quoteBuffer;

然后作业就可以工作了。

取消引用 quote 看起来像这样:

a->quoteBuffer->time;

如果您稍后使用 malloc() 分配了 quote 的多个元素,您可以像这样访问它们:

a->quoteBuffer[i].time;

关于C如何修改其他结构内部结构的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16665995/

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