自定义数据结构
- 零.前言
- 一.自定义类型(struct)
- 1.定义
- 2.类数据成员
- 二.使用类
- 三.编写自己的头文件
- 1.预处理器概述
零.前言 数据结构就是把一组相关的数据元素组织起来然后使用他们的策略和方法。
一.自定义类型(struct) 因为C++提供
class
来定义我们的数据结构,那是后面的重点,所以我们现在不做讨论,后面我们会详细说明。1.定义 我们以关键字
struct
开始,紧跟着类名和类体(类体可以为空)。类体有花括号包围形成了一个新的作用域。类内部定义的名字必须唯一。但是可以与类外部的名字重复。花括号后面必须写一个分号常见的定义有两种方式:
struct student
{
/* *** */
}kanna, *ptr_student;
struct student
{
/* *** */
};
student kanna, *ptr_student;
但是我们推荐使用第二种方法,因为第一种方法吧对象的定义和类的定义放在一起,容易惹人心烦。
2.类数据成员 C++11新标准规定,我们可以定义一个类内初始值
如同:
struct student
{
int id = 0;
unsigned level = 9;
};
二.使用类 啊这,这好像没说啥,只讲了
.
符号,所以就直接举个例子跳过。struct goods
{
int id = 0;
int price = 9;
};
goods a, b;
int tot = 0;
a.price = 10;
b.price = 100;
tot = a.price + b.price;
三.编写自己的头文件 为了确保每个文件中类的定义一致,类通常被定义在头文件中,而且类所在的头文件的名字应与类的名字一样。
1.预处理器概述 我们之前已经了解了一个预处理器
#include
,现在会新了解一个预处理功能头文件保护符,它依赖于预处理变量
,预处理变量
有两种状态:已定义和未定义。#define
把一个名字设定成预处理变量#ifdef
仅当变量的定义为真时(或已被定义)才为真#ifndef
仅当变量的定义为假时(或未被定义)才为真当
#ifdef 或 # ifndef
为真时,才执行后续操作,直到#endif为止
举个例子,我们的头文件:
#ifndef GOODS_H
#define GOODS_H
struct goods
{
int id = 0;
int price = 9;
};
#endif
如果我们没有定义GOOD_H,我们就执行后面的内容:定义GOOD_H、结构体goods,然后结束。
当然我们嵌入式文件中,也常含有这些定义:
#ifdef DRV_DEBUG
#define DBG_LVLDBG_LOG
#else
#define DBG_LVLDBG_INFO
#endif /* DRV_DEBUG */
如果是DEBUG模式,DBG_LVL就是LOG,否则就是INFO,这样,就可以
牵一发而动全身
推荐阅读
- 【C】题目|【C语言】题集 of ⑥
- 游戏|2022年如何学习前端前沿技术,破卷而出()
- 分布式|《Python3网络爬虫开发实战(第二版)》内容介绍
- 笔记|C语言数据结构——二叉树的顺序存储和二叉树的遍历
- C语言学习(bit)|16.C语言进阶——深度剖析数据在内存中的存储
- 机器学习|机器学习Sklearn学习总结
- 个人日记|K8s中Pod生命周期和重启策略
- 数据结构和算法|LeetCode 的正确使用方式
- Python|Python实战(使用线性回归预测房价)
- 先序遍历 中序遍历 后序遍历 层序遍历