我正在尝试做这样的事情
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'ing空间怎么样?
答案 0 :(得分:3)
您可以声明为全局,然后在函数内部分配内存。
如果要为数组分配内存。
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分配的内存。