c - 结构中的字符串

标签 c

我有一个问题,我找不到任何解决方案。在 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/

相关文章:

c - 使用 %p 和 %d 获取变量地址的差异 b/w

c - 为什么拔掉 USB 线后 select 返回?

c - 易变的变量

c - 代码中的无限循环

c - 递增指针,精确序列

c - 如何测量图像中的环境光水平?

不能将一个数组分配给另一个

c - 冒泡排序函数中出现意外的 0

c - 编译 PortAudio 示例时出错

c - 我在 C 代码 : invalid operands to binary expression ('long long (int)' and 'int' ) and I don't know how to fix 中收到错误