在文章 嵌入式开发《C语言(八:(1)2分钟搞懂“结构体”有何优势?》中介绍了结构体的概念以及结构体有何优势。这篇文章将介绍关于结构体的零碎知识点,学会了这些零碎知识,才能走得更远。
(1)结构体的定义和初始化
1)定义:在定义时必须列出所有成员变量(包含类型和名字),一定不要对这些成员变量进行赋值操作。如下代码所示,定义一个struct student的结构体类型 其中name age grade作为结构体的成员
struct student{char name[20];int age;float grade;};
这种是标准形式。也可以
struct {char name[20];int age;float grade;};
常用的是第一种类型,原因是student其实是一个标签,将成员name、age、grade绑定在一起,只需要声明一次,就可以直接用struct student定义多个同一类型的变量。
![e456a667643f6178bd9ac808f94d9061.png](https://img-blog.csdnimg.cn/img_convert/e456a667643f6178bd9ac808f94d9061.png)
2)初始化:有2种方法一种是先定义后赋值。另一种是定义的时候就初始化
比如初始化名字名字为zhangsan 年龄为18 成绩为59.9的学生。其中s1是struct student类型的结构体变量,与前面所提到的变量类似。
第一种:先定义再赋值
struct student s1; // 定义结构体变量s1s1 = {“zhangsan”, 18, 59.9};// 给s1赋值
第二种:定义的同时初始化
struct student s1 = {“zhangsan” 18, 59.9};// 与上面一样
为什么需要初始化?当然是为了后续使用这个结构体,如果不进行初始化操作,有时无法确保这个结构体变量中的内容确定是多少,这涉及到变量在内存中的存储方式。
(2)如何访问结构体成员变量?
有2种方式:直接访问和间接访问
1)直接访问:通过 点(.)操作符
拿前面的例子将:定义变量 struct student s1 ,如果要访问age成员,可以使用s1.age 访问 name可以s1.name。
struct student s1 = {"zhangsan