gpt4 book ai didi

在结构上创建双指针以按索引使用(类似于数组,但最大大小未知)

转载 作者:行者123 更新时间:2023-11-30 16:21:53 25 4
gpt4 key购买 nike

我正在尝试使用双指针创建项目索引器,以便能够通过其编号获取指向特定项目的指针。

我宁愿使用数组来完成此任务,但项目的最大值未知。所以,我需要以某种方式通过索引进行访问。

在 VS 中,我收到错误“访问冲突写入位置 0x0000000000000000”

typedef struct {
char * data_3;
int data_1;
float data_2;
// and other data, doesnt matter
}obj_t;

void process_item(obj_t * input_item)
{
// do something...
}

obj_t * create_new_item()
{
obj_t * local_obj;
// do something...
return local_obj;
}

int get_max_items()
{
return 8; // just some number, which can be set from outside
}

int main()
{
int i;
obj_t * item = NULL;
obj_t ** item_indexer = NULL;

for (i = 0; i < get_max_items(); i++)
{
item = create_new_item(); // create different items
item_indexer[i] = &item; // Error: access violation writing location 0x0000000000000000
}

process_item(item_indexer[i]); // need send item with specific index
}

我希望像数组一样使用它:

item_indexer[0] is (*item) created at i = 0
item_indexer[1] is (*item) created at i = 1
...

并且能够发送特定项目

但我遇到了有关访问冲突的错误。

最佳答案

也需要为双指针分配内存:

item_indexer = calloc(get_max_items(), sizeof(obj_t));

并修复取消引用指针:

item_indexer[i] = item; // no need & here

关于在结构上创建双指针以按索引使用(类似于数组,但最大大小未知),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54679847/

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