您可以声明为全局,然后在函数内分配内存。
如果要为数组分配内存。
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 分配的内存。