【问题标题】:Assigning values to a struct array将值分配给结构数组
【发布时间】:2020-11-22 12:19:06
【问题描述】:

我正在尝试将值分配给结构数组。但是,我收到“预期表达式”错误。有什么我想念的吗?我正在使用 Xcode 以防万一。

#include <stdio.h>
#include <stdlib.h>

struct MEASUREMENT
{
    float relativeHumidity;
    float temperature;
    char timestamp[20];
};

int main()
{
    struct MEASUREMENT measurements[5];
    
    measurements[0] = {0.85, 23.5, "23.07.2019 08:00"}; //Expected expression error
    measurements[1] = {0.71, 19.0, "04.08.2019 10:21"}; //Expected expression error
    measurements[2] = {0.43, 10.2, "07.08.2019 02.00"}; //Expected expression error
    measurements[3] = {0.51, 14.3, "20.08.2019 14:45"}; //Expected expression error
    measurements[4] = {0.62, 10.9, "01.09.2019 01:00"}; //Expected expression error

谢谢!

【问题讨论】:

    标签: c


    【解决方案1】:

    在大括号中列出值是声明中初始化的一种特殊语法。大括号中的列表本身并不构成可用于赋值的表达式。

    你可以在定义数组时以这种形式提供初始值:

    struct MEASUREMENT measurements[5] = {
            {0.85, 23.5, "23.07.2019 08:00"},
            {0.71, 19.0, "04.08.2019 10:21"},
            {0.43, 10.2, "07.08.2019 02.00"},
            {0.51, 14.3, "20.08.2019 14:45"},
            {0.62, 10.9, "01.09.2019 01:00"},
        };
    

    在表达式中,您可以使用 复合文字 定义一个临时对象,然后将其值分配给另一个对象。复合文字由括号中的类型组成,后跟用大括号括起来的初始化器列表:

    measurements[0] = (struct MEASUREMENT) {0.85, 23.5, "23.07.2019 08:00"};
    measurements[1] = (struct MEASUREMENT) {0.71, 19.0, "04.08.2019 10:21"};
    measurements[2] = (struct MEASUREMENT) {0.43, 10.2, "07.08.2019 02.00"};
    measurements[3] = (struct MEASUREMENT) {0.51, 14.3, "20.08.2019 14:45"};
    measurements[4] = (struct MEASUREMENT) {0.62, 10.9, "01.09.2019 01:00"};
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-18
      • 2021-06-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多