C++_类型&变量&类和对象
数据类型(type)简称类型 是具有相同特征的数据的集合,是一个抽象概念 C++的数据类型主要分为三种: 原始数据类型:内置或预定义的数据类型,用户可以直接使用它们声明变量。例如:int,char,float,bool等 整数、字符、布尔型、浮点、双浮点数、void、宽字符 等 派生数据类型:从原始或内置数据类型派生的数据类型 函数 数组 指针 引用 用户自定义类型:这些数据类型由用户自己定义 类 结构体 union:在并集中,所有成员共享相同的内存位置 枚举类型 typedef:为 复杂的声明 定义 简单的别名 变量类型 变量:数据保存在计算机中,是存储在内存中的某一块空间上,这块用来存储数据的空间就是变量,给这块空间命的名就是变量名 变量其实只不过是程序可操作的存储区的名称。C 中每个变量都有特定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上。C变量 变量类型就是存储在变量中的数据的数据类型 变量的值就是变量这块空间中存储的数据的值 变量的定义 变量的定义,告知编译器 在内存申请一块空间 用来存储数据,数据类型是 ...
节点和结点
节点和结点 节点和结点的区别有: 节点是一个实体具有处理的能力;而结点是一个交叉点,是一个标记 一般算法中的点都称为==结点== 节点被认为是一个实体,有处理能力,比如网络上的一台计算机;而结点则只是一个交叉点,像”结绳记事”,打个结,做个标记,仅此而已 还有就是,要记住:一般算法中点的都是==结点==。 我们在数据结构的图形表示中,对于数据集合中的每一个数据元素用中间标有元素值的方框表示,一般称它为数据结点,简称结点
C++_STL用法[持续更新]
vectorvector容器详解 stringstring用法详解 c++在string末尾添加字符或字符串 stackstack用法详解 queuequeue用法详解
重点!_头文件&源文件&编译&链接
[重点!]头文件&源文件&编译&链接C/C++支持分离式编译:一个程序可以分成多个部分保存在各个文件(头文件、源文件)中,在链接之前,各个文件(无论源文件还是头文件)是相互独立、没有关联的 分离式编译是指一个完整的程序或项目由若干个源文件共同实现,每个源文件单独编译生成目标文件,最后将该项目中的所有目标文件连接成一个单一的可执行文件的过程。 在这里插一嘴: ==#include==的作用 这是一个宏定义,众所周知,宏定义就是替换,比如a.cpp中要包含a.h,写作#include”a.h” 这一行就是将#include后的”a.h”替换为a.h中的所有代码 头文件里的内容就在这里“展开”了 但这并不能说明a.cpp和a.h是有关联的,只是a.cpp中包含了a.h,包含并不意味着有关联 因为#incldue是宏定义,是替换,跟其他的宏定义一样,比如#define N 100 众所周知,==在定义变量(自定义)或者函数时,头文件保存变量(自定义)和函数的声明,源文件保存变量和函数的实现& ...
C++_vector访问元素的几种方式
C++ STL vector容器访问元素的几种方式
C++_取整函数
C++取整函数都包含在头文件cmath中#include 向上取整:ceil()画图很好理解 无论是整数还是负数,向上取整就是向上(x轴正方向)找距离最近的整数 ceil(1.3) 结果是2 ceil(-1.2) 结果是-1 向下取整:floor()又叫 “地板算法” 无论是整数还是负数,向上取整就是向下(x轴负方向)找距离最近的整数 ceil(1.3) 结果是1 ceil(-1.2) 结果是-2
震惊!_类内成员函数可以访问本类对象的私有成员
[震惊!]类内成员函数可以访问本类对象的私有成员sList是一个类 私有成员是head,有一个成员函数的形参是本类对象(的引用,引不引用不影响结论和原因) ==为什么呢!head明明是b的私有成员,为什么可以被访问了!!??==因为! 对象b是sList类的,而这个intersection函数是sList的成员函数 head虽然是sList类的对象的私有成员,但是是在sList类内访问的 ==就是 在类内访问了本类(的实例化对象)的私有成员,这当然是可以的! 因为这是在类内访问的,又不是在类外== 这说明了,类的成员的访问权限,是对于==类==而言的,决定在==类==外是否可被访问 而非对于对象来说的(因为对象不同但是都是属于同一种类,类的实例化对象的成员,本来就是类的成员,只是抽象和实例化的问题 这非常合理地体现了 类 的封装性 这个就是不行的,在类外访问了 这一点是非常好用的,可以利用这一点 =& ...
开辟新空间与普通声明定义的一个区别
开辟新空间与普通声明定义的一个区别如果在一个循环中,有一个语句是普通声明定义一个变量,在循环中,其实每次都是使用的同一个空间,只是在循环中反复覆盖这个空间的数据 而开辟新空间(C++的new,C的malloc等)是每次在敦区开辟一个新的空间,而且如果不手动释放,在程序结束之前一直都在占用。(所以有的时候需要手动释放,防止堆上的空间都被占用导致开辟不出新空间) 上面的代码是在一个while循环里的,Book是一个链表的结点类,数据域有IBSN、name、price 本意是想要每次都在链表尾插 如果划线的写成 1Book b(ISBN,name,price); 其实每次循环用的都是同一块空间,是在链表的同一个结点上反复更改数据域的ISBN、name、price而已,因为b并不是产生的新结点,b用的是原来的地址,没有分配新的空间
链表怎么排序
链表怎么排序方式一:只交换结点的数据域,不更改指针域 这样就可以采用各种排序方式了,冒泡、选择等,根据链表的特性进行一定的更改就可以 方式二:将链表放到顺序表,对顺序表排序,将顺序表每个结点的数据域依次赋值给链表的每个结点的数据域 也是不用更改指针域 参考来源
Linux_与Shell的关系
一个完整的计算机,整体结构如下图: ①我们的计算机由硬件组成,包括CPU、内存、主板、磁盘、各种外设等等。当这台计算机没有安装任何软件,只是一个硬件的集合体时,也叫做 裸机(纯硬件)。 ②操作系统是系统软件,操作系统的内核控制着和管理计算机上的所有硬件和软件,从而进行任务调度、资源分配等。操作系统起到承上启下的作用。 ③我们平时使用的应用软件(或叫应用程序),如QQ音乐、英雄联盟等,是基于操作系统开发的,可以理解为在操作系统的上层。这些程序的开发往往调用了操作系统提供的接口,离开了操作系统是无法独立运行的。 Shell是一个特殊的应用程序,介于操作系统内核和用户之间,是一个“命令解释器”,负责接受用户输入的指令并进行解释,将需要执行的操作传递给内核执行,并输出执行结果返回给用户。 在linux早期是没有图形化界面的,与系统进行交互的唯一方式就是通过shell提供的命令行界面(command-line interface, CLI)。同样在工作中,需要通过本机登录内网开发机,使用命令行界面进行开发,从而保障安全性。 命令行界面只接受文本输入。我们想使用shell进行开发,则需要深入了 ...
Linux_快捷键&热键
1. 光标移动123456789101112ctrl + < # 移动到前一个单词开头ctrl + > # 移动到后一个单词结尾ctrl + A # 移动到开头ctrl + E # 移动到结尾alt + B # 向左移动一个单词alt + F # 向右移动一个单词ctrl + B # 向左移动一个字符ctrl + F # 向右移动一个字符esc + B # 向左移动一个单词esc + F # 向右移动一个单词ctrl + XX # 在上次光和当前光标所在字符间跳转esc + T # 交换光标位置前的两个单词 2. 拷贝/剪切/粘贴/删除12345678* ctrl/shift + Insert # whindows下复制粘贴文本 * cmd + c/v # macOS下复制粘贴文本 ctrl + K # 剪切光标后所有字符 ctrl + U # 剪切光标前所有字符 ctrl + Y ...
从CLion和VsCode的小发现到C++的编译
一场编译环境的配置让我简单思考了一下VsCode和CLion的一个小区别 CLion、VS2022一个界面只能容纳一个项目 因此一个界面只能打开一个项目 好像是因为这两种编译器对每个项目都配置对应的环境(我猜的,因为每个项目里面有独立的配置文件 VsCode一个界面可以容纳多个项目,在”工作区”中通过不同的文件夹区分不同的项目 因此一个界面可以打开多个项目 VsCode一个环境配置文件可以配置整个工作区中的所有文件的环境(只要工作区一级目录包含一个配置文件文件夹,工作区的所有项目都用这个文件夹,而且配置文件夹可以添加编译环境,因为一个工作区既可以编译C、C++,也可以编辑Python等,只需要下载相应的插件并将配置添加到配置文件夹就可以 任何程序,一个项目里面只能存在一个main函数 《C++ Primer Plus 第六版》1.4中写,Windows编译器如果要编译程序,要为程序创建一个项目才行,并将组成程序的文件添加到该项目中。项目中有编译器提供的IDE(集成开发环境) CLion、VS2022是名副其实的“编译器” VsCode其实算是一个“编 ...
C++_new对象加括号和不加括号的区别
https://blog.csdn.net/a2796749/article/details/46908035 总结起来就是:如果在使用new在堆上开辟某一类型的空间的时候 如果是非自定义类型(int等),后面加括号的话,就以为了进行初始化,如果括号内有参数,就初始化为参数,如果没有参数(就是只有括号,什么都没有),就初始化为0 如果是自定义类型(类、结构体),后面加了括号的话,说明调用构造函数(也是初始化) 首先回顾一下关于构造函数的知识: 构造函数是用来在对象创建的时候对对象进行初始化的 用户可以自定义构造函数 构造函数分为带参数的构造函数和不带参数的构造函数 带参数的构造函数使得每次创建对象的时候可以根据不同的参数对于对象进行不同的初始化 而众所周知,带参数的函数可以进行重载(函数可重名,通过参数的个数和类型进行区分,根据参数个数和类型调用对应的同名函数)所以一个类中可以有多个构造函数(构造函数都是重名的,没有类型,名称跟类名一样);也可以构造参数缺省的函数(默认参数的构造函数) 一个类中可以有多个构造函数,其中不需要输入参数的函数称为默认构造函数 == ...




