今天在工作时,看到了奇葩的结构体初始化方式,于是我查了一下C99标准文档和gcc的说明文档,终于搞清楚是怎么回事了。

  假设有如下结构体定义:

typedef struct
{
int a, b, c;
} MyStruct;

  那么结构体的初始化方式如下有三种:

(1) C89的初始化方式

MyStruct test = {, , };

  这种初始化的优点是语法简单,无需输入变量名;缺点是成员变量的初始化顺序必须与声明的一致,无法乱序初始化。

(2) C99新增的“指定初始化列表”(designated initializers)的初始化方式

MyStruct test = {.b = , .a = , .c = };

  这种初始化的优点是可以乱序初始化;缺点是语法略微复杂,要打变量名。

(3) gcc的初始化方式(GNU扩展,非标准)

MyStruct test = {a : , b : , c : };

  与上一种相同,优点可乱序初始化;缺点语法略微复杂。另外还有一个缺点——非标准,可移植性差。

最新文章

  1. Java多线程之Wait()和Notify()
  2. struts2异常处理,global-results定义全局结果处理
  3. 从wordcount 开始 mapreduce (C++\hadoop streaming模式)
  4. 微信公众平台开发—利用OAuth2.0获取微信用户基本信息
  5. 类库探源——System.Environment
  6. LightOJ 1422 Halloween Costumes(记忆化搜索)
  7. linux下的php网站放到Windows服务器IIS下.htaccess文件伪静态规则转换
  8. etcd使用之ttl不准确问题
  9. 状态转移的最短路 隐式图搜索 UVA 658
  10. ANT风格URL规则
  11. iOS 力学动画生成器UIKit Dynamics 之碰撞效果解说
  12. 【NOIP模拟】cut
  13. 【LCT】BZOJ2049 [SDOI2008]Cave 洞穴勘测
  14. 5.6Python数据处理篇之Sympy系列(六)---矩阵的操作
  15. java设计模式概述
  16. nodejs 下载远程图片
  17. HTML之Position用法
  18. vsCode---进行HTML文件编辑与浏览器运行
  19. jquery 加載
  20. JavaScript——DOM树的增查改删总结

热门文章

  1. C++ macro(宏)使用小结
  2. 边工作边刷题:70天一遍leetcode: day 86-1
  3. 安全框架 - Shiro与springMVC整合的注解以及JSP标签
  4. 台北Unity开发者研讨会 笔记
  5. java 16-2 ArrayList的练习2
  6. smarty缓存控制
  7. STL整理
  8. vim自动添加注释
  9. IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程
  10. [CareerCup] 3.4 Towers of Hanoi 汉诺塔