我是C的新手,所以我确信这很容易。
我正在尝试在头文件中声明array[10]
个分数,并在我的example.c
文件中将其定义为静态变量。我在我的函数init_heap()中初始化它。但是,当该函数返回时,数组的所有元素都为null。我该怎么做呢?我需要对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...
提前致谢..
答案 0 :(得分:2)
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]