3

我对C非常陌生,所以我相信这真的很容易。

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

标题片段:

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

extern struct fraction *myArray[10];

例子.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...

提前致谢..

4

1 回答 1

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}
    };

编辑:

As @David Heffernan points out, you're declaring an array of pointers to struct fraction in this line: extern struct fraction *myArray[10];. I think you're trying to get just an array of struct fraction, so you should try this instead in place of that line: extern struct fraction myArray[10]

于 2013-03-30T07:04:59.720 回答