指针的声明符为 : *d d为变量的名称
指针存放某个对象的地址,若要获取地址,就需要使用取地址符 : &
如:
int a = 2;
int A = &a;
引用不是对象,没有实际的地址,没有引用的指针
指针的类型要与所指向对象的类型严格匹配(有两种情况除外),否则对该对象的操作会引发错误,指针的类型实际上被用于指定其指向对象的类型。
指针的值:
1.指向一个对象;
2.指向紧邻对象所占空间的下一个位置;
3.空指针;
4.无效指针 (上述情况除外)不能访问,不能拷贝其值
2.3.均没有指向任何对象,访问此类指针的对象的操作不被允许
利用指针访问对象
在指针指向一个对象的前提下 允许使用解引用符 * 来访问指针指向的对
int a = 2,*A = &a;
cout<<*A<<endl;就可以输出 2
解引用符只有在声明中财才用于声明指针类型 在表达式中 都是解引用的作用
空指针
生成空指针的方法:
1.int *a = nullptr;
2.int *a = 0;
3.int *a = NULL;(#include前提下)
nullptr可以被转化为任意的指针类型 NULL则是一种预处理变量 其值就为0 预处理命令前不用加std::
使用没有初始化的指针经常会引发程序的崩溃(无法访问一个不存在地址的值)
赋值和指针
指针变量可以任意复制 没有引用那种绑定关系赋值永远改变的对象是等号左侧的对象
如果指针的值是0 则转换为bool类型为false 反之 取true
也可以使用== 和 != 来比较两个指针指向的对象 结果也是 bool类型的值
使用非法指针进行比较的操作会有无法预计的后果
void *型的指针
其可以存放任意对象的地址
不能直接操作void类型的指针 只能用于比较,作为函数的输入和输出,还有赋值给另一个void指针