我有一个问题,我找不到任何解决方案。在 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}
最佳答案
嗯,你不能。
一般语法
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}};
使其成为初始化。
就是说.. 更常见的做法是创建一个类型定义的结构,然后在您需要的地方创建该类型的实例。这也将允许您使用初始化。喜欢:
#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;
}
关于c - 结构中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58406493/