我需要帮助为结构中的数组赋值。非常感谢您的帮助:
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
非常感谢您的帮助!
答案 0 :(得分:4)
TEMP_T *temps;
从该行中删除*
。然后它将是一个真正的TEMP_T
对象而不是指针。
或者,malloc
一些内存到temps然后使用:
temps->_values[0] = x;
答案 1 :(得分:4)
TEMP_T *temps;
temps
是一个指针,因此它没有成员,只有struct
和union
有成员。
为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
才能使用它,因此对结构的指针访问变得合法。