用单个字段初始化结构

黏土鳍

我有一个结构:

 struct MY_TYPE {
      boolean flag;
      short int value;
      double stuff;
    };

我知道我可以通过以下方式初始化它:

MY_TYPE a = { .flag = true, .value = 123, .stuff = 0.456 };

但是,现在我需要创建一个指针变量,My_TYPE*而只想在那里初始化一个字段?我试过例如:

MY_TYPE *a = {.value = 123};

但是我得到了编译器错误"Designator in intializer for scalar type 'struct MY_TYPE *'"

是否可以使用一个字段初始化结构?

伦丁

首先,您正在混淆struct MY_TYPE和typedef。由于这个原因,发布的代码无效。您必须这样做:

typedef struct 
{
  bool flag;
  short int value;
  double stuff;
} MY_TYPE;

然后,您可以使用指向复合文字的指针,以实现所需的内容:

MY_TYPE* ptr = &(MY_TYPE){ .flag = true, .value = 123, .stuff = 0.456 };

但是请注意,复合文字将具有局部范围。如果希望在局部作用域的末尾使用这些数据,则必须使用指向静态或动态分配的变量的指针。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章