Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何初始化包含指向结构的指针的全局数组?_C_Arrays_Pointers - Fatal编程技术网

C 如何初始化包含指向结构的指针的全局数组?

C 如何初始化包含指向结构的指针的全局数组?,c,arrays,pointers,C,Arrays,Pointers,我是C语言的新手,正在尝试创建一个全局数组,其中包含指向结构的指针: person* persons[n]; 但是,我需要将上述变量设置为全局变量。为此,我需要在所有函数之外声明它。但是我怎么能在不知道n是什么的情况下做到这一点呢?这里真的很失落,任何帮助都将不胜感激 以下是我最终要实现的目标: person* persons[]; function () { initialize global array here } 使用指针的指针并在init函数中调用malloc perso

我是C语言的新手,正在尝试创建一个全局数组,其中包含指向结构的指针:

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