草根外卖转C++

<> 引包标准库 "" 引包从当前文件夹开始找,多用于自定义包,然后其他。

编译器: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 = &num;    num2= 20; p1=20 xxx ; *p1 = 20 正确

3. 常量指针指向常量  const int * const p1 = &num;  此时内容和指针本身都不能改.

*** 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 &sum; } int sum 是自动管理,结束回收, 外面使用时指向的地址被悬挂了. 所以需要内存管理

int sum = new int ; sum = a + b; return &sum;   不用的时候delete 掉

防止悬挂 还可以用static 修饰, static 只被初始化一次, 然后一直存在除非进程挂掉.

数组的标识符就是指针所以 也需要内存管理,或者static , 或者 数组是在函数外面声明好的.

函数最好不要返回数组. 

参数 const string& str msg="xx" 表示 str 是个引用常量, 不可以修改.默认为"xx", 传的时候用引用.

编译:  

预处理: 宏展开,条件编译,包含头文件.

编译: 产出汇编, 汇编操作的是寄存器

汇编: 产出二进制

链接: 产出程序

面向对象:

class 封装继承多态

封装。 public 类外部可用, private 类外部不可用

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值