条件编译
条件编译-百度百科 条件编译- C语言中文网
库文件&静态库&动态库
库文件-百度百科 库、动态库和静态库(.dll,.so,.lib,.a)知乎 浅谈静态库和动态库_知乎
C语言为何不支持重载
C语言为什么不支持函数重载?c++又是如何支持的?
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用的是原来的地址,没有分配新的空间
链表怎么排序
链表怎么排序方式一:只交换结点的数据域,不更改指针域 这样就可以采用各种排序方式了,冒泡、选择等,根据链表的特性进行一定的更改就可以 方式二:将链表放到顺序表,对顺序表排序,将顺序表每个结点的数据域依次赋值给链表的每个结点的数据域 也是不用更改指针域 参考来源




