gpt4 book ai didi

C: 结构指针数组

转载 作者:太空宇宙 更新时间:2023-11-04 07:51:20 25 4
gpt4 key购买 nike

我正在尝试创建并初始化一个指向结构指针数组的指针。该数组将传递到我程序的许多部分。

这是我的代码:

文件.h

#ifndef FILE_H
#define FILE_H

typedef struct Object Object;

void init(Object*** objs);

#endif

文件.c

#include <stdio.h>
#include <stdlib.h>
#include "file.h"

struct Object
{
int a, b;
};

void init(Object*** objs)
{
*objs = malloc(5 * sizeof(Object*));

for(int i = 0; i < 5; i++)
{
*objs[i] = malloc(sizeof(struct Object));
*objs[i] -> a = i; // arbitrary member access
*objs[i] -> b = i * 2; // arbitrary member access
}

}

ma​​in.c

#include "file.c"

int main(int argc, char** argv)
{
Object** prog_objs;

init(&prog_objs);
// should now have a pointer to an array to pass around

for(int i = 0; i < 5; i++)
{
printf("Obj: %d, %d\n", prog_objs[i] -> a, prog_objs[i] -> b);
}

return 0;
}

我不完全确定为什么这不起作用。我确定我的 main() 是正确的,问题出在 init() 函数中。我尝试了多种不同的方法来将数组元素初始化为结构指针,但我不断遇到编译错误或段错误。

非常感谢任何关于我的问题所在的建议!谢谢

最佳答案

*objs[i] 是优先错误。它解析为 *(objs[i])

它应该是(*objs)[i]

关于C: 结构指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53679198/

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