指针是指向另外一种类型的复合类型,与引用类似,指针也实现了对其他对象的间接访问.
与引用相比,指针本身是个对象,允许对指针赋值和拷贝,而且在指针的生命周期内容可以先后指向几个不同的对象
nt *p1;//指向int型对象的指针
double d1;//指向double型对象的指针
知识兔
nt ival =42; //取地址符&
int *p =&ival; //p存放变量ival的地址,或者说p是指向变量ival的指针
知识兔
指针值应属于下列四种状态之一
-
指向一个对象
-
执行紧邻对象所占空的的下一个位置
-
空指针
-
无效指针,也就是上述情况之外的其他值
空指针
nt *p1 =nullptr; //等价于 int *p1 =0;
int *p2 =0; //将p2初始化为字面值0
// 需要 #include cstdlib
int *p3 =NUL;//等价于 int *p3=0;
知识兔
建议初始化所有指针
void* 指针,可用于存放任意对象的地址,一个void*指针存放着一个地址,这一点与其他指针类似,不同的是我们对该地址存放什么类型对象并不了解
/编写代码分别更改指针的值以及指针所指对象的值
int i = 0,j=0;
int* p1 = &i;
*p1 = 3; //i =3
p1 = &j; //指向j
*p1 = 5; //j =5
知识兔