首页 > 解决方案 > 结构中的字符串

问题描述

我有一个问题,我找不到任何解决方案。在example.h我通过这个定义结构:

#define TOTAL_NUMBER 3

struct{
  float FirstValue[TOTAL_NUMBER];
  float LastValue[TOTAL_NUMBER];

} VALUES;

我想像这样在example.c中使用。

VALUES.FirstValue={1,2,3} 

但我有一个错误。如何在example.c中这样使用?

VALUES.FirstValue={1,2,3} 

标签: c

解决方案


好吧,你不能。

一般语法

 SomeArrayVariable = {1,2,3};

仅作为初始化有效 - 而不是作为分配。

例子:

int arr[3];
arr = {1, 2, 3}; // Error - invalid assignment

int arr[3] = {1, 2, 3}; // Fine - valid initialization

相反,您可以这样做:

VALUES.FirstValue[0] = 1;
VALUES.FirstValue[1] = 2;
VALUES.FirstValue[2] = 3;

或者你可以这样做:

struct{
  float FirstValue[TOTAL_NUMBER];
  float LastValue[TOTAL_NUMBER];

} VALUES = {{1, 2, 3}, {0, 0, 0}};

使其成为初始化。

也就是说.. 更常见的是创建一个 typedef 的结构,然后在需要的地方创建该类型的实例。这也将允许您使用初始化。喜欢:

#include <stdio.h>

#define TOTAL_NUMBER 3

typedef struct{
  float FirstValue[TOTAL_NUMBER];
  float LastValue[TOTAL_NUMBER];    
} values_t;

int main(void) {
    values_t values = {{1,2,3}, {0, 0, 0}};
    printf("%f\n", values.FirstValue[1]);
    printf("%f\n", values.LastValue[1]);
    return 0;
}

推荐阅读