结构中的字符串

CKo*_*car 1 c

我有一个问题,但找不到任何解决方案。在example.hI中,我以此定义结构:

#define TOTAL_NUMBER 3

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

} VALUES;
Run Code Online (Sandbox Code Playgroud)

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

VALUES.FirstValue={1,2,3} 
Run Code Online (Sandbox Code Playgroud)

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

VALUES.FirstValue={1,2,3} 
Run Code Online (Sandbox Code Playgroud)

438*_*427 5

好吧,你不能。

通用语法

 SomeArrayVariable = {1,2,3};
Run Code Online (Sandbox Code Playgroud)

仅在初始化时有效-在赋值时无效。

例:

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

int arr[3] = {1, 2, 3}; // Fine - valid initialization
Run Code Online (Sandbox Code Playgroud)

相反,您可以执行以下操作:

VALUES.FirstValue[0] = 1;
VALUES.FirstValue[1] = 2;
VALUES.FirstValue[2] = 3;
Run Code Online (Sandbox Code Playgroud)

或者您可以这样做:

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

} VALUES = {{1, 2, 3}, {0, 0, 0}};
Run Code Online (Sandbox Code Playgroud)

进行初始化。

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

#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;
}
Run Code Online (Sandbox Code Playgroud)