引用 为对象起另外一个名字,通过将声明符写成 &d,其中d是声明的变量名。一旦初始化完成,引用将和起初始值绑定在一起,无法再绑定到另一个对象,因此引用必须初始化。
引用就是别名,初始化以后,对引用的所有 *** 作,都作用于与其绑定的对象上面。引用只能绑定在对象上,不能和字面值和某个表达式的结果绑定在一起。
指针指针同样用于对对象的间接访问,和引用的不同在于指针本身也是一个对象,其次指针在定义时无需赋值,如果指针没被初始化,将是一个不确定的值。
空指针不指向任何对象,生成空指针
int *p =0; int * p1= nullptr int *p2=NULL
void* 指针可以用来接收任何对象,但是我们不能直接 *** 作void* 指针所指向的对象,因为我们不知道这个对象是什么
const 限定符被const修饰的变量,在被定义后就不能被改变。默认状态下,const对象只在文件内有效,我们可以加上extern关键字使得该常量被多个文件共享。
可以将引用绑定在const对象上,但是这种引用不能被用作修改它所绑定的对象。
const int a=3; const int &b=a;
要想存放指向常量的地址,只能使用指向常量的指针。
const double o=3; const double *p=&o;
指针也是一个对象,因此我们也能使用const去修饰指针,把*放在const前面用以说明指针本身的值也是常量
const double o=3; const double *const p=&o;
- 顶层const:指针本身是个常量
- 底层const:指针指向的对象是一个常量
常量表达式是指值不会改变并且在编译的过程就能得到计算结果的表达式。能够参与常量表达式运算的只有算术类型、指针和引用。constexpr修饰指针是只对指针本身有效。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)