如何根据C语言标准初始化结构

如何根据C语言标准初始化结构

我想初始化一个struct元素,在声明和初始化中拆分。这就是我所拥有的:

typedef struct MY_TYPE {
  bool flag;
  short int value;
  double stuff;} MY_TYPE;void function(void) {
  MY_TYPE a;
  ...
  a = { true, 15, 0.123 }}

的局部变量,这是声明和初始化一个局部变量的方式吗?MY_TYPE按照C编程语言标准(C89,C90,C99,C11等)?或者有什么更好的或者至少是在工作?

更新最后,我有一个静态初始化元素,根据需要设置每个子元素。


陪伴而非守候
浏览 480回答 3
3回答

料青山看我应如是

你可以用复合文字..根据该页面,它在C99中工作(也可以计算为Ansi C).MY_TYPE a;a = (MY_TYPE) { .flag = true, .value = 123, .stuff = 0.456 };...a = (MY_TYPE) { .value = 234, .stuff = 1.234, .flag = false };初始化器中的名称是可选的;您还可以编写:a = (MY_TYPE) { true,  123, 0.456 };...a = (MY_TYPE) { false, 234, 1.234 };

森栏

我看你们已经收到了关于ANSIC 99的答案,所以我会对ANSI C89发表意见。Ansi C 89允许您以这样的方式初始化结构:typedef struct Item {     int a;     float b;     char* name;} Item;int main(void) {     Item item = { 5, 2.2, "George" };     return 0;}需要记住的一件重要事情是,在初始化结构中的一个对象/变量时,它的所有其他变量都将初始化为默认值。如果不初始化结构中的值,所有变量都将包含“垃圾值”。祝好运!
打开App,查看更多内容
随时随地看视频慕课网APP