gpt4 book ai didi

c - 指针数组(指向结构)

转载 作者:行者123 更新时间:2023-12-04 04:37:24 24 4
gpt4 key购买 nike

我正在尝试做这样的事情

typedef struct _thingy_t
{
int num;
} thingy_t;

void go(int idk)
{
// normally I could just do
thingy_t* ary[idk];
// but I need the array to be global
}

我需要一个指向大小为 idk 的结构的指针数组

使用在函数外部声明的“双指针”是解决此问题的最佳方法吗?
那么结构体的 malloc 空间呢?

最佳答案

您可以声明为全局,然后在函数内部分配内存。

如果要为数组分配内存。

void go(int);  

thingy_t *data=NULL;
main()
{

//read idk value.
go(idk);

}
void go(int idk)
{
data = malloc(idk * sizeof(thingy_t) );
// when you allocate memory with the help of malloc , That will have scope even after finishing the function.

}

如果要为指针数组分配内存。
thingy_t **data=NULL;

int main()
{
int i,idk=10;
go(idk);

for(i=0;i<10;i++)
{
data[i]->num=i;
printf("%d ",data[i]->num );
}

return 0;
}

void go(int idk)
{
int i=0;
data=malloc(idk *sizeof( thingy_t * ));
for ( i = 0; i<idk ; i++) {
data[i]=malloc(sizeof( thingy_t));
}
}

别忘了 free()使用 malloc 分配的内存。

关于c - 指针数组(指向结构),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19509187/

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