指针用途
指针可以访问一个变量的实际存放的内存地址
指针定义
在使用前我们需要记住两个关键符 , * 表示取值符,表示获取指针指向内存中的具体数据,而 & 表示取址符,表示获取该变量存放数据在内存中的具体地址。
// 定义一个常量a
int a = 1 ;
// 定义一个的指针
int * p ;
// 将指针指向a的地址
p = &a;
// 输出p的地址
cout<< "p的地址为"<<(int)p << endl
// 输出指针p指向内存中保存的具体值
cout<< "p指向内存中的值具体为"<<*p << endl
指针所占内存
指针本身所占内存在32位操作系统为4个字节,在64位操作系统下占8个字节,它仅仅是存放一个地址而不关心这个地址具体所存放数据的内存大小。
野指针和空指针
指针本身的值是可以自己定义的,当我们创建了一个指针,指向一块未知地址,就可能会出现严重的错误,这样胡乱指向未知错误地址的指针变量叫野指针,空指针即指向地址为0的指针,它本身即不指向任何内存空间。
引用的使用
引用的使用需要用到关键字&,在定义时如下
// 定义一个常量a
int a = 1 ;
// 定义一个a的引用b
int &b = a
这样我们就创建了一个变量a的引用变量b,引用也可以说给变量a起了别名,此时可以理解为b是和a同样指向了同一个内存地址,只是变量的名字不相同而已,而且b一旦声明,那么它指向的内存地址不可改变,但内存中所存放的值是可以改变的。
引用和指针的使用区别
-
指针是通过定义一个指针变量来访问变量的地址;
而引用是为另一个变量创建了一个别名,可以共同访问同一个内存地址 -
指针在没有const修饰的情况下可以继续修改本身所指向的内存地址;
但引用必须要初始化,指向一个有效地址,且之后这个指向地址不可更改,即引用是一个必须初始化的常量指针。
网友评论