C++ (六) 指针
指针就是保存了一个地址
解引用就是根据指针地址找到数据所在,即 *p,找到了就能对这个位置的数据操作了:*p = 100;
取得一个变量的地址:
int a = 100;
int *p = &a;//现在p指向a这个变量的地址,注意是指向a的地址,而不是a数据本身,所以p现在是地址的地址
指针所占的内存空间
32位系统占用4个字节,64位系统占用8个字节‘
空指针 & 野指针
空指针就是NULL,野指针就是你可能像下面这样随便指向了内存中的某个地方:
int *p = (int *)0x10100;
cout >> *p >> endl;
因为你随便指向了一个地址为0x10100的地方,也不知道有没有申请,所以根本没有访问权限,这叫野指针,你定义没问题,但是一操作就会报错,空指针也是;
常量指针
就是前面加了一个const:const int *p = &a ;这个时候
- 指针的指向可以改
- 但指针指向的值不可以改
指针常量
就是这样:int * const p = &a ;
此时跟上面正好相反,指针的指向不可以改,但指向的值可以改;
*p = 20 ; ✔
*p = &b ; ❌
const int * const p = &a
这个样子的话,啥都不能改;