C 如何初始化包含指向结构的指针的全局数组?
我是C语言的新手,正在尝试创建一个全局数组,其中包含指向结构的指针:C 如何初始化包含指向结构的指针的全局数组?,c,arrays,pointers,C,Arrays,Pointers,我是C语言的新手,正在尝试创建一个全局数组,其中包含指向结构的指针: person* persons[n]; 但是,我需要将上述变量设置为全局变量。为此,我需要在所有函数之外声明它。但是我怎么能在不知道n是什么的情况下做到这一点呢?这里真的很失落,任何帮助都将不胜感激 以下是我最终要实现的目标: person* persons[]; function () { initialize global array here } 使用指针的指针并在init函数中调用malloc perso
person* persons[n];
但是,我需要将上述变量设置为全局变量。为此,我需要在所有函数之外声明它。但是我怎么能在不知道n是什么的情况下做到这一点呢?这里真的很失落,任何帮助都将不胜感激
以下是我最终要实现的目标:
person* persons[];
function () {
initialize global array here
}
使用指针的指针并在init函数中调用
malloc
person **persons;
int n = 42;
void init(void)
{
persons = malloc(n * sizeof *persons);
if (!persons) {
/* handle malloc failure here */
}
}
使用指针的指针并在init函数中调用
malloc
person **persons;
int n = 42;
void init(void)
{
persons = malloc(n * sizeof *persons);
if (!persons) {
/* handle malloc failure here */
}
}
使用指针的指针并在init函数中调用
malloc
person **persons;
int n = 42;
void init(void)
{
persons = malloc(n * sizeof *persons);
if (!persons) {
/* handle malloc failure here */
}
}
使用指针的指针并在init函数中调用
malloc
person **persons;
int n = 42;
void init(void)
{
persons = malloc(n * sizeof *persons);
if (!persons) {
/* handle malloc failure here */
}
}
我是否仍然可以使用索引引用这个新指针指针的结构(就像我在保存指针的常规数组中所做的那样)?@Vimzy yes,例如
persons[0]
是数组对象的第一个person*
。@不管怎样,这是我的错。我现在唯一的问题是,我仍然可以这样编写代码:“persons[h]=(person*)malloc(sizeof(person))”我对结构的“指针指向指针”有点陌生。因为最终我的代码需要这样做:“persons[h]->name=…”,但我不确定这是否可行?@Vimzy是的,但一定要初始化所有的persons[I]
首先也使用malloc
。我仍然可以使用索引引用这个新指针指针的结构吗(就像我在保存指针的常规数组中那样)?@Vimzy yes,例如persons[0]
是数组对象的第一个person*
。@不管怎样,这是我的错。我现在唯一的问题是,我仍然可以这样编写代码:“persons[h]=(person*)malloc(sizeof(person))”我对结构的“指针指向指针”有点陌生。因为最终我的代码需要这样做:“persons[h]->name=…”,但我不确定这是否可行?@Vimzy是的,但一定要初始化所有的persons[I]
首先也使用malloc
。我仍然可以使用索引引用这个新指针指针的结构吗(就像我在保存指针的常规数组中那样)?@Vimzy yes,例如persons[0]
是数组对象的第一个person*
。@不管怎样,这是我的错。我现在唯一的问题是,我仍然可以这样编写代码:“persons[h]=(person*)malloc(sizeof(person))”我对结构的“指针指向指针”有点陌生。因为最终我的代码需要这样做:“persons[h]->name=…”,但我不确定这是否可行?@Vimzy是的,但一定要初始化所有的persons[I]
首先也使用malloc
。我仍然可以使用索引引用这个新指针指针的结构吗(就像我在保存指针的常规数组中那样)?@Vimzy yes,例如persons[0]
是数组对象的第一个person*
。@不管怎样,这是我的错。我现在唯一的问题是,我仍然可以这样编写代码:“persons[h]=(person*)malloc(sizeof(person))”我对结构的“指针指向指针”有点陌生。因为最终我的代码需要这样做:“persons[h]->name=…”,但我不确定这是否可行?@Vimzy是的,但一定要初始化所有的persons[I]
首先也使用malloc
。