心得"/>
C语言的一些经验和心得
C语言的一些经验和心得之构造类型
目录
C语言的一些经验和心得之构造类型
前言
一、C语言有哪些构造类型?
二、四种构造类型
1. 数组
2. 结构体 关键字 struct
3. 枚举 关键字 enum
4.共用体 关键字 union
总结
前言
上一章我们一起学习了C语言关键字章的基本数据类型,这一章我们来学习一下构造类型
一、C语言有哪些构造类型?
在C语言的语法中,声明了四种构造类型:数组,结构体,公用体,枚举,C语言是一种结构化语言,它有着清晰的层次,可按照模块的方式对程序进行编写,十分有利于程序的调试,且c语言的处理和表现能力都非常的强大,通过不同的构造类型,结合逻辑法则的使用,可以实现多种多样的功能,因此学好基础数据类型非常重要,接下来就让我们学习一下构造类型
二、四种构造类型
1. 数组
在这里我们先只讨论一维数组
-
特点
- 用来存储一组数据
- 只能存放
一种
数据类型 - 里面存放的数据称为
元素
-
定义
- 声明数组的类型
- 声明数组的元素个数(需要多少存储空间)
-
格式
- 元素类型 数组名[元素个数]
- 如,
int names[3]
; - 元素有顺序之分,每个元素都有一个唯一的下标(索引),从 0 开始
- 数组元素的访问:
names[0]
; - 下面是数组的图解,图片采自菜鸟教程
//数组的定义
int arr[]={0,1,2,3,4,5,6};//不写数组元素数量,数组将根据元素数量进行自动赋值相当于int arr[6]
int arr[6]={0,1,2,4};//既写数组元素数量,又对数组内元素进行初始化,未初始化的默认为0,相当于int arr[6]={0,1,2,4,0,0};
int arr[6];//只写数组元素数量,不进行初始化,默认为0,相当于int arr[6]={0,0,0,0,0,0};
//数组的调用
//由于数组是从0下标开始计算位置,因此定义六个元素时为int arr[6],但是使用时则从int arr[0]开始例如
int arr[6] = {0,1,2,3,4,5};//arr[5]为数组内第六个元素,则arr[5]=5;
arr[0] = 1//对数组内第一个元素进行赋值相当原来的数组变成int arr[6] = {1,1,2,3,4,5};
2. 结构体 关键字 struct
这里我们只讲解简单的结构体内容
-
可以由不同类型的数据组成
-
结构体类型不能重复定义
-
定义格式
- 结构体类型 结构体变量名;
- 结构体类型 默认是不存在的,需要我们自己来定义类型
-
定义结构体变量的3中方式
1> 先定义结构体类型,再定义变量(分开定义)
2> 定义结构体类型的同时定义变量
3> 定义结构体类型的同时定义变量(省略了类型名称) -
C 数组允许定义可存储相同类型数据项的变量,结构是 C 编程中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。
-
但是数组只能对同一类型的数据进行追踪,因此我们需要用到结构体,构建结构体成员变量;
为了定义结构,您必须使用 struct 语句。struct 语句定义了一个包含多个成员的新的数据类型,struct 语句的格式如下:
struct tag { member-listmember-list member-list ...
} variable-list ;
tag 是结构体标签。
member-list 是标准的变量定义,比如 int i; 或者 float f,或者其他有效的变量定义。
variable-list 结构变量,定义在结构的末尾,最后一个分号之前,您可以指定一个或多个结构变量
-
结构用于表示一条记录,假设您想要跟踪图书馆中书本的动态,您可能需要跟踪每本书的下列属性:
- Title
- Author
- Subject
- Book ID
struct Books
{char title[50];char author[50];char subject[100];int book_id;
} book;
这样子我们就定义了一个名为Books的结构体,可以通过book调用,里面有title、author、subject、book_id四个成员变量
下面时实例
#include <stdio.h>struct Books
{char title[50];char author[50];char subject[100];int book_id;
} book = {"C 语言", "Qilian", "编程语言", 123456};int main()
{printf("title : %s\nauthor: %s\nsubject: %s\nbook_id: %d\n", book.title, book.author, book.subject, book.book_id);
}
通过初始化后,我们通过printf函数打印结果如下
title : C 语言 author: Qilian subject: 编程语言 book_id: 123456
通过结构体,可以很方便的调用不同类型的变量,并且使其结构化,方便管理
3. 枚举 关键字 enum
- 使用场合:当某个变量只允许有固定的几个取值时
- 里面的枚举值 都是 整型常量
-
- 定义 一种 Season 枚举类型 enum Season{spring, // 0summer, // 1autumn, // 2winter // 3 }- 定义 一种 Sex 枚举类型 enum Sex{Man, // 0Woman, // 1Unkown // 2 }
可以看出来,枚举和结构体有相类似的地方,在我的理解来看,结构体适用于大量不同类型 场景,但是枚举的使用场景就比较苛刻,并且枚举值都是整型,在未进行初始化时,枚举默认是从第一个变量为0开始计算,很适用于与switch开关语句进行配合使用,方便管理;
4.共用体 关键字 union
共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值。共用体提供了一种使用相同的内存位置的有效方式。
共用体和结构体的定义方式非常相似
union Data
{int i;float f;char str[20];
} data;
可以对照结构体的说明来看,虽然他也是一种可以对复杂数据进行管理的类型,但是与结构体相比却大有不同,结构体的成员变量存储在不同的内存中,修改其中一个成员,彼此之间互不影响,但是共用体存在同一个内存中,对其中成员的修改会影响到其他的成员
总结
今天我们学习了,四种构造类型,相较于上一章,内容会比较复杂,大家可以不用着急去学会,学透,而且是作为一篇笔记,在需要的时候拿出来复习,经过多次的实际使用,相信大家一定会对其有所心得
更多推荐
C语言的一些经验和心得
发布评论