指针数组(结构)

时间:2013-10-22 04:49:00

标签: c arrays pointers

我正在尝试做这样的事情

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空间怎么样?

1 个答案:

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