黑马程序员——c语言复杂数据类型:结构体和枚举,typedef的使用

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、什么是结构体

当一个整体由多个数据构成时,我们可以用数组来表示这个整体,但是数组有个特点:内部的每一个元素都必须是相同类型的数据。

在实际应用中,我们通常需要由不同类型的数据来构成一个整体,比如学生这个整体可以由姓名、年龄、身高等数据构成,这些数

据都具有不同的类型,姓名可以是字符串类型,年龄可以是整型,身高可以是浮点型。

 为此,C语言专门提供了一种构造类型来解决上述问题,这就是结构体,它允许内部的元素是不同类型的。


二、

1.定义形式

 结构体内部的元素,也就是组成成分,我们一般称为"成员"。

结构体的一般定义形式为:

 struct 结构体名{

类型名1 成员名1;

类型名2 成员名2;   

};

比如,我们定义一个学生类

三、结构体变量的定义

前面只是定义了名字为Student的结构体类型,并非定义了一个结构体变量,就像int一样,只是一种类型。

定义结构体的方式一般有三种

1.先定义结构体类型,再定义变量

2.定义结构体类型的同时定义变量

3.直接定义结构体类型变量,省略类型名

四、结构体的注意点

1.结构体不可以包含自己

2.结构体内可以包含别的结构体

3.只有当定义属于结构体类型的变量时,系统才会分配存储空间给该变量

结构体的初始化

将各成员的初值,按顺序地放在一对大括号{}中,并用逗号分隔,一一对应赋值。

比如初始化Student结构体变量stu

结构体只能在定义变量的时候赋初值

枚举

枚举是C语言中的一种基本数据类型,并不是构造类型,它可以用于声明一组常数。
当一个变量有几个固定的可能取值时,可以将这个变量定义为枚举类型。比如,你可以用一个枚举类型的变量来表示季节,因为季节只有4种可能的取值:春天、夏天、秋天、冬天。

1.枚举的定义

1)枚举类型的定义

一般形式为:enum 枚举名 {枚举元素1,枚举元素2,……};

2)枚举变量的定义

跟结构体一样,有3种方式定义枚举变量

1>先定义枚举类型,再定义枚举变量

2>定义枚举类型同时,定义枚举变量

3>省略枚举类型名,直接定义枚举变量

2.枚举的使用

1)C语言编译器会将枚举元素(springsummer)作为整型常量处理,称为枚举常量。

2)枚举元素的值取决于定义时各枚举元素排列的先后顺序。默认情况下,第一个枚举元素的值为0,第二个为1,依次顺序加1

3)也可以在定义枚举类型时改变枚举类型的值


3.枚举变量的基本操作

赋值

可以给枚举变量赋枚举常量或者整型值

遍历枚举元素

typedef

1.typedef作用简介

1)我们可以使用typedef关键字为各种数据类型定义一个新名字

2)我们还可以在别名的基础上再起别名

typedef与指针

除开可以给基本数据类型起别名,typedef也可以给指针起别名

typedef与结构体

给结构体起别名可以使代码更加简洁明

typedef与枚举类型

typedef与指向函数的指针

1)先看一下指向函数的指针如何定义

总结:

1.需要先定义结构体类型,再定义结构体变量。定义结构体类型时,系统是不分配内存空间的。系统只分配内存空间给实际的结构体变量。

2.结构体变量所占内存大小:补齐算法——最大元素的倍数。
3.枚举元素值从0开始,后续元素依次+1。

4.typedef的使用


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值