本文主要是介绍Autoleaders控制组李佳旭——c语言结构体学习笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 1枚举
- 1.1常量符号化
- 1.2enum函数
- 2结构体
- 2.1理解
- 2.2结构体的定义
- 2.3结构体形式声明
- 2.4结构体初始化
- 2.5结构运算
- 3结构与函数
- 3.1指向结构的指针
- 3.2结构指针参数
- 4结构中的结构
- 4.1结构数组
- 4.2嵌套结构
- 5类型函数
- 6 联合(union)
1枚举
1.1常量符号化
首先我们要知道,符合(字母)是相对更好理解的,它可以清晰的表达程序的意思。使用常量符号化可以增加程序的可读性。
1.2enum函数
-
函数的形式
enum
+类型名字+{e0,e1…en}; -
·枚举类型通常只用大括号里的名字,它们就是常量符号,它们的类型为int,值从0到n。
-
枚举计数(小技巧)
2结构体
2.1理解
- 结构体算是我们自定义的一个新数据类型,与传统的数据类型int, char, float, double 等相似。
- 而结构体就相当于一个模具,我们可以利用结构体变量来使用这个模板。
2.2结构体的定义
- struct 函数名称 变量名称
- struct 函数名称 变量名称={成员1,成员2};
像这样类型的被称为结构体
例子
struct date today{int month; int day;int year;};//切记;不能忘记,前面是一个整体。struct date d1,d2;
2.3结构体形式声明
-
首先,结构体也算是一个函数,用法上与函数基本一致,都需要先在头文件的位置声明或者直接写出还是的内容。
第一种struct date today{int month; int day;int year;};struct date d1,d2;
d1,d2中均有month, day, year三个成员。
第二种
struct date today{int month;int day;int year;}d1,d2;
d1,d2中均有month, day, year三个成员。
第三种
struct {int month;int day;int year;}d1,d1;
- 这个为无名结构,必须声明其变量,否则struct为无用结构体。
- d1,d2中均有month, day, year三个成员。
2.4结构体初始化
与数组类似,结构体使用点号.获取单个成员。
然后通过={}的形式来输入struct
2.5结构运算
- 要访问整个结构,直接用结构变量的名字
- 对于整个结构,可以做赋值、取地址,也可以传递函数参数。
d1=(struct date){10,28,2022};//相当于d1.month=10,d1.day=28,d1.year=2022.
d1=d2;//相当于d1.month=d2.month,d1.day=d2.day,d1.year=d2.year.
数组无法完成这些运算。
3结构与函数
3.1指向结构的指针
struct date today{
int month;
int day;
int year;
}d1;
struct date *p =&d1;\\需要用&进行取地址(*p).month = 12;
p->month = 12;\\为了方便我们输入,用->来表示结构函数中的成员
3.2结构指针参数
使用方式:先传入一个指针,在这个内层函数中对指针进行一定的操作。之后通过我们定义的函数返回指针。最后在外部函数中,通过指针使用这个变量。(也就是说通过指针参数,我们把最内层的变量带到了最外层的main函数中)
4结构中的结构
4.1结构数组
形式如下
struct date d1[100];
struct date []={10,28,2022};
相对与数组中每一个成员的类型都为我们定义的结构体
4.2嵌套结构
#include <stdio.h>
struct point{int x;int y;};struct date{struct point p1;struct point p2;};struct date r;//这个就是嵌套类型的变量里面有r.p1.x;r.p1.y;r.p2.x;r.p2.y。
5类型函数
- typedef(自定义类型函数)
- 作用:给已经有的函数定义新的名字
如:typedef int length;(特别注意typedef后面最后一个单词才算是新的名字,毕竟typedef是用来简化程序的,这样才能改善程序的可读性)
- 这样 length就可以代替int出现在变量的定义上了
如:length a,b;
6 联合(union)
- union和struct的使用非常相似,他们的区别就在于union里的变量会占据同一个空间,空间的大小取决于union中占空间最大的变量。
- 因为union的输入输出在同一个空间上,新输入的数据会覆盖原来的数据,这导致在输出上有一点难度。不过union在不同类型的输入和输出以及所占的空间等方面优势明显。
使用形式如下
union arr{char a;int b;long c;long long d;};```
这篇关于Autoleaders控制组李佳旭——c语言结构体学习笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!