一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第二天,点击查看活动详情。
结构体与共用体
前言
这短时间就更新最近在复习的C语言程序设计时做的笔记吧。。。小编是跟着b站上的小甲鱼视频学习的,有兴趣的也可以去学习。总的来说,小甲鱼讲的挺好的,这也给我了亿点点动力,不过更多的还是得动手实践!!
知识点1--概述
问题定义
- 有时需要将不同类型的数据组合成一个有机的整体,以便于引用。如:一个学生有学号、姓名、性别、年龄、地址等属性
```
int num;
char name[20];
char sex; //F/M
int age;
int char addr[20];
```
2. 定义一个结构的一般形式为:
```
struct 结构名{
成员表列
};
```
成员表列有若干个成员组成,每个成员都是该结构的一个组成部分。对每个成员也必须做类型说明,其形式为:
```
类型说明符 成员名;
struct student{
int num;
char name[20];
char sex; //F/M
int age;
float score;
int char addr[20];
};
```
知识点2--定义结构体类型变量的方法
可以采用以下3种方法定义结构体类型变量:
-
先声明结构体类型在定义变量名
例如: struct student student1,student2; 类型名 结构体 变量名 变量名定义了student1,student2为struct student类型的变量,即它们具有struct student类型的结构。
struct student{ int num; char name[20]; char sex; //F/M int age; float score; int char addr[20]; }student1,student2;在定义了结构体变量后,系统会为之分配内存单元。
#include<stdio.h> int main(){ struct student{ int num; char name[20]; char sex; int age; float score; char addr[30]; }student1; printf("the size of struct is :%d\n",sizeof(student1)); //输出68 = 4+20+1+4+8+30 = 67 => 原因:编译器的优化结果 } -
在声明类型的同时定义变量
-
直接定义结构体类型变量
举个栗子~
看图下定义:
-
首先应该定义一个结构date,由month、day、year三个成员组成;
-
在定义并说明变量boy1和boy2时,其中的成员birthday被说明为date结构类型。成员名可与程序中其他变量同名,互不干扰。
struct date{ int month; int day; int year; }; struct{ int num; char name[20]; char sex; struct date birthday; float score; }boy1,boy2;