3

私は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...

前もって感謝します..

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

myArrayglobal を隠しているというローカル配列を作成していますmyArray。次に、関数が終了すると、ローカルmyArrayがスコープ外になり、すべてが失われます。一方、グローバルmyArrayはまだ null です。

試す:

    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]

于 2013-03-30T07:04:59.720 に答える