AutoLeaders控制组—叶睿 C语言结构体学习笔记

目录

1.引入—枚举:

        1.1常量符号化

        1.2枚举

        套路:自动计数的枚举

        1.3枚举量

2.结构类型:

        2.1声明结构类型

        2.2结构类型声明的位置:

        2.3声明结构的形式:

        ·2.4结构变量:

        ·2.5结构的初始化:

        2.6结构成员:

        2.7结构运算:

        2.8结构指针:

3.结构与函数:

        3.1函数作为函数参数

        3.2输入结构

        3.3指向结构的指针

        3.4结构指针参数

3.结构中的结构:

        3.1结构数组

        3.2结构中的结构

        3.2嵌套的结构

        3.3结构中的结构的数组

4.类型定义:

        4.1自定义数据类型(typedef)

        4.2Typedef

5.联合:

        5.1联合

        5.2union的应用


1.引入—枚举:

        1.1常量符号化

        ·用符号而不是具体的数字来表示程序中的数字 

        1.2枚举

        ·用枚举而不是定义单独的const  int变量

         ·枚举是一种用户定义的数据类型,它用关键字enum以如下语法来声明:

                enum枚举类型名字{名字0,...,名字n};

        ·枚举类型通常只用大括号里的名字,它们就是常量符号,它们的类型是int值从0-n

                如:enum colors{red,yellow,green};

        ·当需要一些可以排列起来的常量值是,定义枚举的意义就是给了这些常量名字。

        ·枚举可以作为值 

        ·枚举类型可以跟上enum作为类型

        ·但是实际上是以整数来做内部计算和外部输出的

        ·虽然枚举类型可以当作类型用,但是不好用

        ·如果有意义上排比的名字,用枚举比const  int方便

        套路:自动计数的枚举

         ·可用于遍历所有的枚举量或者简历一个用枚举量做下标的数组

        1.3枚举量

        ·声明枚举量的时候可以指定值

                ·enum  color{red=1,yellow,green=5}

        ·枚举只是int,即使给枚举类型的变量赋不存在的整数值也没有关系

2.结构类型:

        2.1声明结构类型

         ·易犯错误:漏掉struct后面的分号

        2.2结构类型声明的位置:

 

        如图:结构类型的声明是在函数内部的,那么它只能在函数内部使用

        一般情况下,结构类型一般在函数的外部声明,这样就可以被多个函数使用了

        2.3声明结构的形式:

第一种:

         ·p1和p2都是point里面有x和y的值

第二种: 

         ·p1和p2都是一种无名结构,里面有x和y

第三种:

         ·p1和p2都是point里面有x和y的值t

区别:第一和第三种都声明了结构point。但是第二种形式没有声明point,只是定义了两个变量

        ·2.4结构变量:

         ·声明了一种类型后,可以通过那种类型来定义变量,这种变量就叫做结构变量

                比如图中的day,month,year就是三个结构变量

        ·2.5结构的初始化:

        ·与数组相同,结构也是用大括号来赋值

        ·赋值方式:

                1) 直接在大括号内输入三个值,编译器会将三个值一次赋给三个变量

                2) .变量名=  这样可以给你想赋值的变量附上值,没有赋值的变量默认为0

        2.6结构成员:

        ·结构与数组相似

        ·数组用  []  和  下标  访问其单元

                ·a[0]  =  10

        ·结构用   .   和  名字  访问其成员

                ·today.day

                ·student.firstName

                ·pl.x

                ·pl.y

        2.7结构运算:

        ·要访问整个结构直接用结构变量的名字

        ·对于整个结构,可以做赋值、取地址,也可以传递函数参数

                ·pl  =  (sruct point){5,10};        //相当于pl.x  =  5;pl.y  =  10;

                ·p1  =  p2;                               //相当于p1.x  =  p2.x;p1.y  =  p2.y

                数组无法做这两种运算!

        2.8结构指针:

        ·和数组不同,结构变量的名字并不是结构变量的地址,必须使用&运算符

                ·struct date *pDate  =  &today;

3.结构与函数:

        3.1函数作为函数参数

        ·int  numberOfDays(struct  date  d)

        ·整个结构可以作为参数的值传入函数

        ·这时候是在函数内新建一个结构变量,并复制调用者的结构的值

        ·也可以返回一个结构

        ·这与数组完全不同

        3.2输入结构

        ·没有直接的方式可以一次scanf一个结构

        ·记住C在函数调用时永远都是传值的

        ·传入数组和传入结构是不同的

         ·将结构传入函数通常将结构指针作为参数

        3.3指向结构的指针

         ·用->表示指针所指的结构变量中的成员

        3.4结构指针参数

        ·先传入一个指针,在函数里面对指针所指的东西做了一定的处理

        ·如果将指针所指的东西应用完后,再将指针返回这样可以把一个指针串用在多个函数当中

        ·*可以取用一个函数的返回值,将它作为变量进行使用

3.结构中的结构:

        3.1结构数组

         ·如图:初始化时出现了两层括号

                第一层的意思是:开始初始化数组

                第二层的意思是:为数组中的单元赋值

        3.2结构中的结构

        3.2嵌套的结构

                ·struct point{

                        int x;

                        int y;

                 };

                 struct rectangle{

                        struct point pt1;

                        struct point pt2;

                 };

        如果有变量:

                struct rectangle r;

        就可以有:

                r.pt1.x、r.pt1.y

                r.pt2.x、r.pt2.y

        如果有变量定义:

                struct rectangle r,*rp;

                rp=&r;

        那么下面的四种形式是等价的

                r.pt1.x

                rp->pt1.x

                (r.pt1).x

                (rp->pt1).x

但是没有rp->pt1->x(因为pt1不是指针)

        3.3结构中的结构的数组

        ·如图:初始化时出现了两层括号

                第一层的意思是:开始初始化数组

                第二层的意思是:为数组中的单元赋值(这个单元也是结构)

                第三层是:结构中的结构

4.类型定义:

        4.1自定义数据类型(typedef)

        ·typedef 可声明一个已有的数据类型的新名字

                typedef int Length;

                使得 Length 成为 int 类型的别名。

        ·这样, Length 这个名字就可以代替int出现在变量定义和参数声明的地方了

                Length  a,b,len;

                Length  numbers[10];

        4.2Typedef

        声明新的类型的名字的好处:

                ·新的名字是某种类型的别名

                ·改善了程序的可读性

        在 typedef 末尾的那个单词就是定义出的类型

5.联合:

        5.1联合

        ·存储

                ·所有的成员共享一个空间

                ·同一时间只有一个成员是有效的

                ·union的大小是其最大的成员

        ·初始化

                ·对第一个成员做初始化

        ·与struct的区别:

                struct中两个成员的值是截然分开,随时可以使用其中的任何一个

                而对于union来说,所有成员都使用一个空间,一个成员使用了一个值,其他的则无法使用

        5.2union的应用

 

        可以通过这种方式得到一个各类型数字内部的各个字节

        是我们用来做读写的一个媒介

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值