首页 > 编程笔记 > C语言笔记 > C语言结构体和位操作
阅读:2,240
C语言结构的初始化
当定义一个结构对象时,如果想显式地初始化它,必须使用初始化列表:该列表放在一组大括号内,以逗号分隔各初始化器(initializer)或者个别结构成员的初始值。
初始化器和成员声明时的顺序有关:第一个初始化器被关联到第一个成员,第二个初始化器被关联到第二个成员,依此类推。当然,每个初始化器必须具有匹配对应成员的类型(或者,能隐式地转换为成员类型)。如下所示:
在该列表中,每个成员都有一个初始化器。因为成员 published 也是结构类型,所以其初始化器是另一个初始化列表。
可以使指定的初始化器个数少于结构的成员个数。在这种情况下,最后没有对应到初始化器的成员会被初始化为 0。
在上述定义之后,除第一个成员以外,yoursong 的所有其他成员都是 0。成员中的 char 数组被赋值为空字符串,而成员 published 则包含无效的日期{0,0,0}。
如果结构对象属于自动存储类别,初始化器可以是非常量表达式。也可以用相同结构类型的已有对象来初始化一个新的自动结构:
初始化器和成员声明时的顺序有关:第一个初始化器被关联到第一个成员,第二个初始化器被关联到第二个成员,依此类推。当然,每个初始化器必须具有匹配对应成员的类型(或者,能隐式地转换为成员类型)。如下所示:
Song_t mySong = { "What It Is", "Aubrey Haynie; Mark Knopfler", "Mark Knopfler", 297, { 9, 26, 2000 } };
在该列表中,每个成员都有一个初始化器。因为成员 published 也是结构类型,所以其初始化器是另一个初始化列表。
可以使指定的初始化器个数少于结构的成员个数。在这种情况下,最后没有对应到初始化器的成员会被初始化为 0。
Song_t yourSong = { "El Macho" };
在上述定义之后,除第一个成员以外,yoursong 的所有其他成员都是 0。成员中的 char 数组被赋值为空字符串,而成员 published 则包含无效的日期{0,0,0}。
如果结构对象属于自动存储类别,初始化器可以是非常量表达式。也可以用相同结构类型的已有对象来初始化一个新的自动结构:
Song_t yourSong = mySong; // 两个结构在一个语句块内,为有效的初始化
所有教程
- socket
- Python基础教程
- C#教程
- MySQL函数
- MySQL
- C语言入门
- C语言专题
- C语言编译器
- C语言编程实例
- GCC编译器
- 数据结构
- C语言项目案例
- C++教程
- OpenCV
- Qt教程
- Unity 3D教程
- UE4
- STL
- Redis
- Android教程
- JavaScript
- PHP
- Mybatis
- Spring Cloud
- Maven
- vi命令
- Spring Boot
- Spring MVC
- Hibernate
- Linux
- Linux命令
- Shell脚本
- Java教程
- 设计模式
- Spring
- Servlet
- Struts2
- Java Swing
- JSP教程
- CSS教程
- TensorFlow
- 区块链
- Go语言教程
- Docker
- 编程笔记
- 资源下载
- 关于我们
- 汇编语言
- 大数据
- 云计算
- VIP视频