C语言——自定义数据类型(结构体/枚举/联合/位段)

前言:自定义类型和内置类型

char,int,long,float,double都叫做C语言的内置类型
但是当表达一个人,一本书,一件事情的时候,我们就需要一个复杂的类型,这种复杂的类型,一般就被叫做自定义类型

结构体

结构体类型的声明

1.结构是一些值的集合,这些值被称为成员变量,结构的每个成员可以是不同类型的变量

2.结构体的声明:

通式:struct tag //struct是结构体标签
       {
   
   
             member - list;//成员变量
       }variable-list;

举例:
在这里插入图片描述

在结构体类型的声明中,定义的变量可以不需要初始化

3.用结构体创建变量以及结构体传参
还是用上面的Stu的结构体变量
在这里插入图片描述

由于这两个变量是在main函数中进行创建的,所以被叫做局部变量,当然结构体不仅仅可以创建局部变量,还可以创建全局变量
在这里插入图片描述

例如在main函数外面创建的变量以及直接在结构体声明部分创建的变量都被叫做这个程序的全局变量
即s3,4,5,6都被叫做全局变量

4.匿名结构体类型
①单个匿名结构体
在这里插入图片描述

在创建结构体的时候,可以不需要给结构体名字,但是必须在声明结构体的同时创建一个变量,如此时的sa
②多个匿名结构体
在这里插入图片描述

如果代码这样写是正确的吗?
结果是错误的,在编译器编译两个结构体的声明时,即使两个结构体的成员变量都是一样的,但是编译器会把这两个结构体当做两个不同的变量进行使用,所以在psa = &sa中,编译器认为psa和sa的类型不一样,就好比于把char类型的变量赋值int类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值