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++知识库 -> 【918C++程序设计】6、自定义数据类型 -> 正文阅读

[C++知识库]【918C++程序设计】6、自定义数据类型

6.1 结构体

为什么用结构体

在一个组合项中包含若干个类型不同(或相同)的数据项。
形式:
struct 结构体类型名
{成员表};

每一个成员也称为结构体中的一个域(field),成员表又称为域表。

结构体的定义及其初始化

定义方法:
(1)先声明结构体类型再定义变量

struct Student{
.....
};
Student student1,student2;

(2)在声明类型的同时定义变量

struct Student{
.....
}student1,student2;

初始化:
(1)在定义时指定初始值

struct Student{
.....
}student1={...};

(2)声明类型和定义变量分开

struct Student{
.....
};
Student student1={...};

引用结构体变量

形式
结构体变量名.成员名
“.”是成员运算符,优先级最高

结构体数组

每一个数组元素都是一个结构体类型的数据

指向结构体变量的指针

一个结构体变量的指针就是该变量所占据的内存段的起始地址
1、通过指向结构体变量的指针引用结构体变量中的成员

Student stu;
Student *p=&stu;

结构体变量名.成员名 =*p).成员名 = p->成员名

2、用结构体变量和指向结构体变量的指针构成链表 (链表详见6.3)
链表中的每一个元素称为“结点”,每个结点都包括两个部分:用户需要的实际数据,下一个结点的地址。
最后一个元素不再指向其他元素,它的地址部分放一个“NULL”

结构体类型数据作为函数参数

(1)用结构体变量名做参数
(2)用指向结构体变量的指针作实参,将结构体变量的地址传给形参
(3)用结构体变量的引用作函数形参,它就成为实参的别名

6.2 动态内存分配

用new和delete运算符进行动态分配和撤销存储空间

new和delete是运算符,不是函数,因此执行率高。

new 类型 [初值]

new int;//存放整数的空间,返回一个指向该存储空间的地址(指针)
new int(100);//存放整数的空间,指定该整数初值为100,返回一个指向该存储空间的地址(指针)
new char[10];//存放字符数组(包括10个元素)的空间,返回首元素地址
new int[5][4];//存放二维数组的空间,返回首元素地址new分配数组时不能指定初值
float *p = new float(3.14);//将返回的该空间的地址赋给指针变量p

delete 指针变量(对变量)
delete [ ] 指针变量(对数组)
完整例子

int main(){
Student *p;
p = new Student;
p->name = "wang";
p->num = 10123;
cout<<p->name<<endl<<p->num<<endl;
delete p;
return 0;
}

6.3 链表与链表的基本操作

链表中的每一个元素称为“结点”,每个结点都包括两个部分:用户需要的实际数据,下一个结点的地址。
最后一个元素不再指向其他元素,它的地址部分放一个“NULL”

静态链表:所有结点都是在程序中定义的,不是临时开辟的,也不能用完后释放。各结点既可以通过上一个结点的next访问,也可以直接通过结构体变量名a,b,c访问。
动态链表:各结点是可以随时插入和删除的,这些结点并没有变量名,只能先找到上一个结点,才能找到下一个结点。只有提供头指针head的地址,才能访问整个列表。

包括静态链表的建立
动态链表的建立、插入、删除等
详见《C++程序设计题解与上机指导(第3版)》P109

6.4 枚举类型

一个变量只能有几种可能的值。
形式:
enum 枚举类型名{枚举常量表}
花括号内的内容称为枚举元素/枚举常量
声明后可用来定义变量

enum weekday{sun,mon,tue,wed,thu,fri,sat};
weelday workday,week_end;
workday=mon;
week_end=sun;

也可以在声明枚举类型的同时定义枚举变量

enum {sun,mon,tue,wed,thu,fri,sat}workday,week_end;

枚举元素作为常量,是有值的,编译系统按定义时的顺序赋值整数0,1,2…

cout<<workday;
打印为 1 

也可以在声明枚举类型时自己指定枚举元素的值

enum weekday{sun=7,mon=1,tue,wed,thu,fri,sat};
后续元素按顺序+1,sat为6

PS:不能把一个整数直接赋给一个枚举变量,只接受枚举变量类型的数据

workday = tue;
正确
workday = 2;
错误
workday = weekday(2);
先进行强制类型转换,此时正确
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-20 17:52:19  更:2021-12-20 17:52:27 
 
开发: 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/24 12:48:53-

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