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++知识库 -> c语言自建结构 -> 正文阅读

[C++知识库]c语言自建结构

结构:??

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

????设计:

????typedef?struct?结构体名

????{

????????类型1?成员名1;

????????类型2?成员名2;

????????...

????}新名字;

????typedef?struct?Teacher?Teacher;

????定义结构变量:

????????struct?结构体名?变量名;

????????注意:在定义结构变量时struct不能省略

????????结构体变量初始化:

????????????struct?结构体名?变量名={v1,v2...};

????????????注意:必须要根据成员设计的顺序初始化,初始化省略只能从后面开始,不能直接省略中间的

????????????struct?结构体名?变量名={.成员名1=v1,.成员名3=v3,...}

????????????只初始化某些成员,可以不用按顺序初始化

????????????struct?Student?stu1=stu2;??同类型的结构体变量可以直接给结构体变量初始化丶赋值

????????访问成员:

????????????变量名.成员名

????????????结构指针->成员名

????????????结构变量作为形参时:结构体字节数较大,值传递效率低,传指针效率高,不需要改值加const保护

????????????练习1:设计一个教师结构体,成员有姓名?性别?工号?工龄?定义一个教师结构体变量,使用scanf输入各个成员的值并显示

????????????注意:结构体变量一般较大,最好存在堆内存

????如何计算结构体的字节数:

????????结构体成员的顺序会影响总字节数

????????内存对齐:假定第一个成员从0开始,存储每个成员的地址编号必须满足能被该成员字节数整除,不能则补空白字节

????????内存补齐:结构体的总字节数要求必须是最大成员的字节数(在linux系统下最大字节数超过4字节按4字节算,但windows下多大就多大)的整数倍,如果不是则在末尾填充空白字节

????????linux下??#pragma?pack(n)?最大字节超过n按n算,只能放1,2,4(因为n要小于等于4)

????????windows下?该宏定义没用?

联合:union?????使用少量内存对应多个标识符来节约内存,现在基本不用(没有内存对齐,有内存补齐)

????联合与结构的使用方法基本一致,区别在于所有成员公用一块内存,一个成员的值发生改变,其他成员也会跟着改变

????union?Data

????{

????????char?ch[5];

????????int?num;

????};

????字节数为8

????如何判断操作系统的大小端(高位数据存低位地址为大端,反之)

????个人计算机系统一般都是小端系统,unix服务器和网络设备都是大端系统

????本地字节序是小端模式,网络字节序是大端模式

????序列化(上传时将小端转成大端)和反序列化(网上下载时将大端转成小端)(json\xml)

枚举:enum??用处:给数值起一个有意义的名字,提高可读性,相对于宏常量安全性更高

????枚举就是把一种数据类型可能出现的值全罗列出来,取一个有意义的名字,(除此之外的数据如果赋值给该枚举变量就是非法的)?

????可以看做值受限的int类型,c编译器为了效率不检查,所以c语言的枚举变量可以当int类型变量使用,一般会直接使用起好名字的枚举成员

????enum?Direction

????{

????????UP=183,

????????DOWN=184,

????????RIGHT=185,

????????LEFT=186,

????};

????enum?Direction?key=UP;

????UP=100;报错,不可更改

enum?d?

{

????a,b,c

};

则abc分别为0?1?2

enum?d?

{

????a=5,b,c

};

则abc分别为5?6?7

enum?d?

{

????a,b=5,c

};

则abc分别为0?5?6

全局变量初始化时不能调用函数

int*?p=malloc(40)?错误

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-02 10:37:50  更:2021-08-02 10:38:31 
 
开发: 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年5日历 -2024/5/9 15:16:17-

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