IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 2021.7.30标准C语言 -> 正文阅读

[C++知识库]2021.7.30标准C语言

结构:

??结构是一种由程序员自己设计的数据类型,用于描述一个事物的各项数据,由若干个不同的基础类型组成

?设计:
?struct 结构体名
?{
??/* data基础类型 /
??/类型1 成员名1;/
??/
… */
?};
?定义结构变量:
??struct 结构体名 变量名;
??注意:在定义结构变量时,struct不能省略

结构体变量的初始化:
    1. struct 结构体名 变量名 = {v1,v2,v3...}
        注意:必须要根据成员设计的顺序初始化

    2. struct 结构体名 变量名 = {.成员名2=v2,.成员名5=v5...}
        只初始化某些成员,可以不用按照顺序初始化

    3.注意:同类型的结构体变量可以直接给结构体变量初始化,赋值

访问成员:
    结构变量名.成员名

    结构指针->成员名
结构变量作为形参时:
    由于结构变量的字节数都比较大,值传递的效率比较低,因此都是传递结构变量的地址,如果不需要修改结构变量的值,可以使用const保护

练习1:设计一个教师结构体,成员有姓名、性别、工号、工龄,定义一个教师结构体变量,使用scanf输入各个成员的值并显示出来。
struct Teacher tch[5];
tch[0].name…

typedef重定义结构体类型:
    typedef struct 结构体名 结构体名;
        之后就可以不用struct关键字来定义结构体变量;

    typedef struct 结构体名
    {
        /* data */
    }结构体名;
    之后就可以不用struct关键字来定义结构体变量;

注意:一般结构体变量存放在堆内存中

如何计算结构体的字节数:
结构体成员的顺序会影响它的总字节数,如果能够在设计结构体时合理安排成员顺序,可以大大节约内存
内存对齐:
假定第一个成员是从零地址开始,存储每个成员的地址编号必须满足能被该成员的字节数整除,如果不能则填充空白字节
内存补齐:
结构体的总字节数,必须是它最大成员类型的字节数的整数倍,如果不是则在末尾填充空白字节
注意:在Linux系统下计算结构体的对齐与补齐时,如果成员的字节数超过4字节,则按照4字节计算;在Windows下,是按照实际情况计算

??#pragma pack(n) 设置对齐、补齐的最大字节数, n<=默认4(1 2 4)

联合:
union 联合体
{
/* data */
};
联合与结构的使用方法基本一致,与结构的区别是所有成员公用一块内存,一个成员的发生改变,其他成员也会随之改变
联合就是使用少量的内存对应多个标识符,来达到节约内存的目的,现在基本上不再使用了

联合常考的笔试题:

?union Data
?{
??char ch[5];
??int num;
?};// 字节数是8
?注意:计算联合的字节数要考虑内存补齐,联合天然是内存对齐

如何判断操作系统的大小端?

什么是大小端?
?假如十六进制整数0x01020304存储在以0x0A起始的四个字节内存中
?高位数据存储在高位地址:(0x0A:04 0x0B:03 0x0C:02 0x0D:01)小端系统
?高位数据存储在低位地址:(0x0A:01 0x0B:02 0x0C:03 0x0D:04)大端系统
?结合联合实现:
??…/day15/test2.c
?个人计算机一般都是小端系统,而UNIX服务器和网络设备都是大端系统,本地字节序是小端模式,网络字节序是大端模式
?序列化和反序列化(JSON\xml)

枚举:enum
?枚举就是把一种数据类型可能出现的所有值全部罗列出来,取一个有意义的名字,除此之外的数据,如果赋值给该枚举变量就是非法的(愿望)
?枚举可以看做是指受限的int类型,但c编译器为了效率不会检查,所以C语言的枚举变量可以当成int类型变量使用,一般会直接使用起好名字的枚举成员。(锦上添花)

  1. ?enum Direction
    ?{
    ??UP = 183,
    ??RIGHT = 185,
    ??LEFT = 186,
    };
  2. enum Direction {UP,DOWN,RIGHT,LEFT};
    如果不给成员值,枚举常量默认从0开始,依次+1,如果某个设置了值,后面的会在该值的基础上逐渐+1

为什么要使用枚举?

??为无意义的数值起一个有意义的名字,提高了代码的可读性,并且有相对较高的安全性

作业:使用结构体完成通讯录

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-14 13:50:50  更:2021-08-14 13:52:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:47:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码