博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

指针的概念

Posted on 2023-03-12 21:17  乔55  阅读(43)  评论(0编辑  收藏  举报

指针详解

// 指针的初值
1. 指针无须在定义时赋初值
2. 在块作用域内定义的指针未被初始化时其初值未定,与内置类型一样

// 指针的指向
1. 一般情况下,指针的类型必须与所指的数据类型一致,但以下情况除外
   - 允许一个指向常量的指针指向一个非常量对象上。引用同理
   - void*万能指针可指向任意数据类型
2. 指针不能指向的类型
   - 不能定义一个指向引用的指针,因为引用不是对象,没有实际地址

// 指针的大小与运算
1. 两个指针相加减,结果的类型是ptrdiff_t类型,与size_t一样,都定义在cstddef
2. 指针的大小与类型无关,只与当前使用的平台架构有关

// 空指针
1. 定义:不指向任何对象的指针
2. 获取空指针:最直接的办法就是用字面值nullptr来初始化指针
   - int* p = nullptr;
   - int* p = 0;
   - int* p = NULL;
3. NULL:是一个预处理量,可以赋值给指针,定义在cstdlib中,其值为0
4. nullptr:






常量指针与指针常量

// 常量指针,又叫常指针
1. const int* p = &a;
2. 本质是个指针,它指向的内存空间的值不能被修改,并不等同于该指针指向常量
3. 数组指针:本质是指针,它指向数组
4. 函数指针:本质是指针,指针指向一个函数
5. 底层const:指向的内容是个常量

// 指针常量
1. int* const p = &a;
2. 本质是个常量,只是这个常量的含义是一个指针,不能更改该指针的指向
3. 指针数组:本质是个数组,数组元素是指针
4. 指针函数:本质是个函数,其返回值是一个指针
5. 顶层const:指针本身是个常量