-4

構造内の配列に値を割り当てるのに助けが必要です。あなたの助けは大歓迎です:

typedef struct _temp_t {
     int16_t _values[4];
} TEMP_T;

void func() {
    TEMP_T *temps;
    int x = 5;

    temps._values[0] = x;
}

エラーが発生しました:

 ...src/rodm/ucdCom.c:512: error: request for member '_values' in something not a structure or union

あなたの助けは大歓迎です!

4

3 に答える 3

4
TEMP_T *temps;

その行からを削除し*ます。そうすれば、それはTEMP_Tポインタではなく真のオブジェクトになります。

または、一時的にmallocメモリを使用して、次を使用します。

temps->_values[0] = x;
于 2013-01-21T19:12:57.020 に答える
4
TEMP_T *temps;

tempsはポインタであるため、メンバーはなく、structsとunionsだけがメンバーを持っています。

にメモリを割り当てた後temps

temps->_values[0] = x;

または、tempsとして宣言することもできます。TEMP_T

TEMP_T temps;

残りのコードはそのままにしておきます。

于 2013-01-21T19:13:13.777 に答える
0

OPにはどこにも割り当てられた兆候はありませんでしたstruct TEMPT_T

彼はポインターを持っていましたが、それが指すものは何もありませんでした。temps._values[0];次に、彼のコードは、ポインターアクセス構文()ではなく、メンバーアクセス構文()を使用して割り当てを試みますtemps->_values[0];

彼のコードの少し良いバージョンは次のようになります。

typedef struct _temp_t {
    int16_t _values[4];
} TEMP_T;

void func(struct TEMPT_T in) {
    TEMP_T *temps = ∈
    int x = 5;

    temps->_values[0] = x;
}

関数の新しい定義は、関数struct TEMP_Tを使用するためにが存在する必要があることを意味します。したがって、構造体へのポインターアクセスが合法になります。

于 2013-01-21T20:13:44.537 に答える