2015-10-20 84 views
0

我的品牌新的C,我试图创建一个全局数组,将持有的指针结构:如何初始化一个保存指向结构指针的全局数组?

person* persons[n]; 

不过,我需要作出上述全局变量。为此,我需要在所有功能之外声明它。但是我怎么能不知道会是什么?真的失去了这里,任何帮助将不胜感激!

下面就是我最终要做到:

person* persons[]; 

function() { 
    initialize global array here 
} 

回答

3

您使用指针的指针,并在初始化函数调用malloc

person **persons; 
int n = 42; 

void init(void) 
{ 
    persons = malloc(n * sizeof *persons); 
    if (!persons) { 
     /* handle malloc failure here */ 
    } 
} 
+0

我仍然可以使用索引来引用这个新的指针指针的结构(就像我会在保存指针的常规数组中那样)吗? – Vimzy

+0

@Vimzy是的,例如'persons [0]'是数组对象的第一个'person *'。 – ouah

+0

@Nevermind,那是我的不好。我现在唯一的问题是我仍然可以做这样的代码:“persons [h] =(person *)malloc(sizeof(person))”我对这个带指针的指针“指针”有点新。 – Vimzy