2

我正在尝试做这样的事情

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

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

4

1 回答 1

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 分配的内存。

于 2013-10-22T05:11:29.193 回答