C++ 指针 const 数组 引用

指针和const

禁止改写指针(常量指针或常指针)
int x=0;
int * const pInt = &x;
存放地址的变量pInt不可变,但pInt可指向其他变量,x的值可变。

禁止改写间接引用
int x=5;
const int *pInt=&x;
pInt中存放的地址可以变,但x的值不可变。

既禁止改写指针,又禁止改写间接引用
int x=5;
const int * const pInt = &x;

指针和数组

在C++中数组和指针的关系十分密切,两者的内部处理方式几乎相同。访问数组中的元素有下标和指针两种形式,而这两种形式都是基于指针算术机制实现的。

数组名指针
C++编译器将数组名解释为指针,数组名也是指针,可以把数组名当做指针。

指向数组的指针(数组指针)
在很多情况下,数组名可以当成指针用。数组名是常量不是变量,其值是固定的,C++不允许修改数组名的值。这样不够灵活,这样就需要一个指针变量可以修改数组的某个元素。数组名指针,只指向数组所占区域的第一个地址。

指针数组
存放指针的数组,例如:
char* words[6]=[“zero”,“one”,“two”,“three”,“four”,“five”]

引用

引用为某个变量的一个别名,与对变量直接操作完全一样。
在C++中正确使用引用,可以使程序更加简洁和高效。
引用本身没有地址。

引用的声明
类型标识符 &引用名=初始值
int x = 10;
int &rx = x;

此处的&为引用符号,不是取地址符号。
声明中的初始值必须为变量或引用。
注意:
一般rx被声明后是不允许被修改的
声明引用时必须同时进行初始化
声明变量被引用后相当于有两个名字,即x相当于有两个名字
声明语句中的类型标识符必须与初始值的类型一致

引用的特点
对引用的任何一种操作相当于对原始变量的直接操作。
声明一个引用并不是新定义了一个变量,rx相当于x,引用rx不占用任何内存空间,rx和x占用同一块内存空间。

引用的限制
不能建立数组的引用。因为数组是由若干个元素所组成的集合。

不能声明一个引用的引用。可以声明指针的指针但是不是声明引用的引用。因为引用本身没有地址,所以不能给引用起一个别名。

不能声明指向引用的指针。因为引用本身就没有地址,不能定义一个指针指向它。

c++ 指针赋值为0的问题

int *p=0; //空指针,不是野指针
int b=2;
*p=b; //给空指针所指位置赋值,报错
p=&b; //这样才是使p指向变量b的地址

发布了61 篇原创文章 · 获赞 46 · 访问量 1591

猜你喜欢

转载自blog.csdn.net/weixin_44208324/article/details/104838189
今日推荐