ansi-c - 在结构中赋值数组

时间:2013-01-21 19:11:22

标签: c arrays structure

我需要帮助为结构中的数组赋值。非常感谢您的帮助:

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

非常感谢您的帮助!

3 个答案:

答案 0 :(得分:4)

TEMP_T *temps;

从该行中删除*。然后它将是一个真正的TEMP_T对象而不是指针。

或者,malloc一些内存到temps然后使用:

temps->_values[0] = x;

答案 1 :(得分:4)

TEMP_T *temps;

temps是一个指针,因此它没有成员,只有structunion有成员。

temps分配内存后,您可以设置

temps->_values[0] = x;

或者您可以将temps声明为TEMP_T

TEMP_T temps;

并保留其余代码。

答案 2 :(得分: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才能使用它,因此对结构的指针访问变得合法。