C语言结构体的初始化
2024-10-18 20:23:18
今天在工作时,看到了奇葩的结构体初始化方式,于是我查了一下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 : };
与上一种相同,优点可乱序初始化;缺点语法略微复杂。另外还有一个缺点——非标准,可移植性差。
最新文章
- Java多线程之Wait()和Notify()
- struts2异常处理,global-results定义全局结果处理
- 从wordcount 开始 mapreduce (C++\hadoop streaming模式)
- 微信公众平台开发—利用OAuth2.0获取微信用户基本信息
- 类库探源——System.Environment
- LightOJ 1422	Halloween Costumes(记忆化搜索)
- linux下的php网站放到Windows服务器IIS下.htaccess文件伪静态规则转换
- etcd使用之ttl不准确问题
- 状态转移的最短路 隐式图搜索 UVA 658
- ANT风格URL规则
- iOS 力学动画生成器UIKit Dynamics 之碰撞效果解说
- 【NOIP模拟】cut
- 【LCT】BZOJ2049 [SDOI2008]Cave 洞穴勘测
- 5.6Python数据处理篇之Sympy系列(六)---矩阵的操作
- java设计模式概述
- nodejs 下载远程图片
- HTML之Position用法
- vsCode---进行HTML文件编辑与浏览器运行
- jquery 加載
- JavaScript——DOM树的增查改删总结