概述
一、指针
1.指针持有一个对象的地址,称为指针“指向”该对象。可通过指针可以间接操纵它指向的对象。一个指针有两个存储单元,一个是指针自己的存储单元,里面存放着所指对象的地址;另一个就是指针指向的对象的存储单元,里面存放该对象的值。
2.定义指针语法:类型 *指针变量
;
3.指针引用方法:
int x = 100, y = 20;
int *pi = &x;
*pi = y;
// 间接操作pi指向的x,即x = y
4.指针类型:指针的类型即指针指向的类型。
需要在定义指针时指出指针的类型。
type* pointer;
5.空指针:指针值为0时是一个空指针,即不指向任何对象的指针。
表示空指针的3种方法:;nullptr(在c++11中);预处理常量NULL<cstdlib>
=6.指针运算:
同类型的指针可以进行相等和不等操作,结果是bool类型;
指针可以进行加或减整数值运算;
自增、自减运算适用于指向数组元素的指针;
7.void*指针:可以持有任何类型的地址值;相关的值是个地址;void指针只能传送该地址值或者和其他地址值进行比较;void指针不能到其他类型指针的直接赋值。
二、引用
1.引用的定义和初始化:类型 &引用名 = 初始值;
2.左值引用:左值引用又称为别名,它可以作为对象的另一个名字;可以通过左值引用间接地操纵对象。引用一旦初始化,就不能再指向其他的对象。
定义:type& refVariable = leftValue;//引用必须被初始化,初始值是一个有内存地址的对象
3.右值引用:
类型 &&右值引用变量 = 右值表达式;
右值引用由类型标识符和两个取地址符(&&)定义;
右值引用必须被初始化,初始值是右值表达式;
不能将右值引用直接绑定到一个左值上;
三、常量表达式和constexpr
1.常量表达式是指值不会改变并且在编译过程中就能计算出结果的表达式。const描述的都是“运行时常量性”,即运行数据不可更改。
2.将对象声明为一个constexpr类型,以便编译器来验证对象的值是否是一个常量表达式。声明为constexpr的数据对象一定是一个常量,且必须用常量表达式初始化。
3.CV限定词:
(1)const限定词:关键字const限定的对象是不可改变的;
(2)volatile限定词:关键字volatile限定的对象不能被编译器例行优化。
4.指向const对象的指针(非const ):const type *cp; 或者type const cp;(cp的值不能改变)
指向非const对象的const指针:type const cp = initAddressValue;(cp是常量指针,初始化后值不能改变)
const type const cp = initAddressValue;
四、零散知识点:
1.range-for(简化的for):从头到尾对容器或序列的所有元素逐个执行某操作。暴力取值时使用。
语法形式:for(declaration:expression)//expression是要处理的序列,declaration定义一个变量,表示序列中的每个元素 statements;statement是一条语句或语句块,表示对元素的处理代码
eg:for(int e:{2,3,5,7,11,13,17,19}) sum+=e
2.auto和decltype
(1)auto为用auto声明变量的类型,由编译器去自动分析表达式的类型,推断出变量的实际类型。定义auto变量必须有初始值
(2) 希望从初始值表达式推断出要定义的变量的类型时,用auto
(3)希望从表达式推断出要定义的变量的类型,但是又不想用这个表达式的值初始化该变量时,用decltype。
3.动态存储空间管理
(1)new运算符:在堆上动态分配空间,创建对象,并返回对象的地址;一般将new返回的地址保存在指针变量中,以便间接访问堆上的对象。
表达式三种形式:a.分配单个对象:new 类型 或者 new 类型(初始值)
b.分配多个连续存储的对象:new 类型[数组大小]
c.定位new,在指定位置分配空间:new (指针) 类型;
(2)delete运算符:释放new运算符分配的空间
b.释放new分配的单个对象的delete形式:delete 指针;
c.释放new分配的数组的delete形式:delete[] 指针;
d.定位new没有对应的delete表达式;
(3)空悬指针
delete后的ip不是空指针,而是“空悬指针”,即指向不确定的单元
(一定不能这样用,会产生很严重的错误,如果修改的系统中重要的一个数据,可能导致系统崩溃)
最后
以上就是热情手套为你收集整理的指针、引用和const的全部内容,希望文章能够帮你解决指针、引用和const所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复