gpt4 book ai didi

c - 全局变量在函数外变空

转载 作者:行者123 更新时间:2023-12-02 02:04:46 25 4
gpt4 key购买 nike

我是 C 语言的新手,所以我确信这真的很简单。

我试图在头文件中声明分数的 array[10],并在我的 example.c 文件中将其定义为静态变量。我在我的函数 init_heap() 中初始化它。但是,当该函数返回时,数组的所有元素都为空。我该如何正确地做到这一点?我需要对 myArray 进行更改。

标题片段:

struct fraction
{
signed char sign;
unsigned int numerator;
unsigned int denominator;
};

extern struct fraction *myArray[10];

example.c:

//includes...

static struct fraction *myArray[10];


void init_heap()
{
struct fraction myArray[] = {
{0,0,1},
{0,0,2},
{0,0,3},
{0,0,4},
{0,0,5},
{0,0,6},
{0,0,7},
{0,0,8},
{0,0,9},
{0,0,10}
};
beginFreeIndex = 0;
}
//etc...

提前致谢..

最佳答案

struct fraction myArray[] = {
{0,0,1},
{0,0,2},
{0,0,3},
{0,0,4},
{0,0,5},
{0,0,6},
{0,0,7},
{0,0,8},
{0,0,9},
{0,0,10}
};

您正在创建一个名为 myArray 的本地数组,它隐藏了全局 myArray。然后,当您的函数结束时,本地 myArray 超出范围,您将失去一切。同时,全局 myArray 仍然是空的。

尝试:

    myArray = {
{0,0,1},
{0,0,2},
{0,0,3},
{0,0,4},
{0,0,5},
{0,0,6},
{0,0,7},
{0,0,8},
{0,0,9},
{0,0,10}
};

编辑:

正如@David Heffernan 指出的那样,您在以下行中声明了一个指向struct fraction 的指针数组:extern struct fraction *myArray[10];。我认为您只是想获得一个 struct fraction 数组,所以您应该尝试用这个代替该行:extern struct fraction myArray[10]

关于c - 全局变量在函数外变空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15715927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com