<> 引包标准库 "" 引包从当前文件夹开始找,多用于自定义包,然后其他。
编译器:mingw 明基w ; base 和g++
g++ xx.cpp -o xx.exe
单引号 字符 双引号 字符串
符号常量 不需要分号, 定义放在代码头部, using namespace 后面
解决中文乱码:方法1 #include windows.h
SetConsoleOutputCP(CP_UTF8)
方法2: system("chcp 65001")
黑马笔记 https://www.yuque.com/embheima/newcpp
日了狗,内容没保存....
for 循环简写 for (type e:arr){ }
字符串:
c语言风格 char s[] = "xxx" char *s="xxx" "xxx" 第2,3中字面量的指针,无法修改,
正确c语言风格 char s[]="xxx" char *s = malloc(4) strcpy(s,"xxx") 让*s 指向栈上的内存地址,而不是字面量的只读数据段
c++风格 string s = "xxx"
数组:
一维带赋值时可不带长度,编译器自动推导, 多维必须带长度
指针:
64位 8B, 32位 4B
指针变量带 * ,形式为 类型 * 变量名 = &var_name 类型 是 内存区域的内容类型
声明时, * 是指针类型修饰, 非声明时 * 代表取内存地址的内容, 就是py 中的解包
野指针: 被声明但是没有被初始化, 可能是别人用的内容. 指针声明时会被立即分配内容.
空指针: 延迟赋值,先赋值一个空 int * p= NULL 或int * p = nullptr(c++11) 本质是0
内存管理:
默认: 自动分配, 不回收, 程序结束回收.
需要: 手动分配,手动回收. new 分配, delete 删除. 数组删除 delete[]
删除指定位置元素:
新建 new int[4] , 循环老的赋值到新的, delete[] 老数组; 将老的数组指针 变为新的指针 pold = pnew
指针悬挂:
指针指向的区域已经被回收了. num = 10; int * p1 = &num ; int *p2 = p1 ; delete p1; // p2就悬挂了
所以 指针最好不要再用别的指针了, 删除的时候确定没有人用了再删.
常量指针 const
1.指向常量的指针, const 在 * 前面, const 修饰指针. 如 const int *p1 或者 int const * p1
此时 *p 的内容是常量不可修改, 但是p 本身是可以修改的
2. 常量指针, 指针本身是常量不可更改,但内容可以更改, * 修在const 前, * 修饰常量;
如 int * const p1 或 * int const p1 此时在声明时必须赋值,否则p1是常量没法改了.
num = 10 ; int * const p1 = # num2= 20; p1=20 xxx ; *p1 = 20 正确
3. 常量指针指向常量 const int * const p1 = # 此时内容和指针本身都不能改.
*** const * 内容不变, * const 指针不变.
函数: 传值(副本) 不涉及内存安全,赋值变量值 ; 传地址,复制的地址值,是内存操作,有内存安全风险, 内外和声明都用* 比较麻烦, 传引用 声明时用&, 内外不用改 ,不是指针,不涉及内存安全, 传的引用是复制引用对象.
无返回值 void 空, 可不return
传参数组时, int arr[] int arr[10] int * arr 都一样都是传的指针, 所以需要传长度.
引用,是别名, 不可以像指针一样改地址或者改指向. 所以引用必须初始化时赋值,不可以更改,
int a =10 ; int & b =a ; b 被&修饰,就是个引用, b 是 a的别名
返回指针 : 有可能悬挂指针, 比如 int * add(int a, int b ){ int sum ; sum = a + b ; return ∑ } int sum 是自动管理,结束回收, 外面使用时指向的地址被悬挂了. 所以需要内存管理
int sum = new int ; sum = a + b; return ∑ 不用的时候delete 掉
防止悬挂 还可以用static 修饰, static 只被初始化一次, 然后一直存在除非进程挂掉.
数组的标识符就是指针所以 也需要内存管理,或者static , 或者 数组是在函数外面声明好的.
函数最好不要返回数组.
参数 const string& str msg="xx" 表示 str 是个引用常量, 不可以修改.默认为"xx", 传的时候用引用.
编译:
预处理: 宏展开,条件编译,包含头文件.
编译: 产出汇编, 汇编操作的是寄存器
汇编: 产出二进制
链接: 产出程序
面向对象:
class 封装继承多态
封装。 public 类外部可用, private 类外部不可用
2403

被折叠的 条评论
为什么被折叠?



