-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 进行一些记忆,然后使用:

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

temps是一个指针,所以它没有成员,只有structs 和unions 有成员。

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

temps->_values[0] = x;

或者您可以声明tempsTEMP_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;
}

函数的新定义意味着 astruct TEMP_T必须存在才能使用它,因此对结构的指针访问变得合法。

于 2013-01-21T20:13:44.537 回答