我有一个问题,但找不到任何解决方案。在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)
好吧,你不能。
通用语法
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)