/
...
/
/
三. 引用数据类型
Search
Try Notion
三. 引用数据类型
简单指针
//*结合性解释问题 int* a ; //解释:类型为int* int *a ; //解释:*a等价int 由于 int *a , b ; a为指针,b为int,故解释其二比较合理
Copy
C++
整数不能直接被赋值给指针
可通过new分配动态内存区域(heap),而非静态(heap),必须配对delete
可进行指针运算:+1,不是绝对地址+1,而是当前指针类型的下一个位置
new delete规则
非new分配内存,不要用delete释放
不要对同一内存释放两次
对空指针delete时安全的
对于数组而言,new[]时也应该delete[](无需带具体的delete[num])
对实体而言,new[]时应该delete
数组名—-指针
多数情况下数组名等价数组第一个元素的地址 比如 int a[] = {1, 2, 3} ; int *b = a ; 可知 a[1]==b[1] ; *(a+1)==*(b+1) ; 但是sizeof中数组名不会被解释成地址: 详见<.复合类型-C++-数组-Comment> 在对数组名取地址时,也一样,取地址会得到整个数组的地址(类型为int[])
Copy
C++
数组(的)指针 , 指针(的)数组
int a[10] ; 则有 int (*b)[10] = &tell ; //数组指针int *b[10] // 为指针数组
Copy
C++
引用类型
必须在定义时初始化,且不能更改,相当于创建变量的别名
传参时,必须传达变量本身,而不能是表达式(禁止临时变量)
若声明为const的话,可以传达表达式(可以新建临时变量),并在需要的时候新建临时变量 按值拷贝
🤔何时创建临时变量
实参类型正确,不是左值
字面量
表达式计算量
🤔何为左值?
可被引用的数据对象(可放在赋值号= 左边的对象
包括const量
实参类型不正确,但可转换为正确的量
int→double
引用的函数返回
注意不要返回临时变量
const引用返回:引用返回值是左值 可写出类似fun1(a,b)=1 的语句 若不想要修改(类似右值的特性),可加const