关于指针
-
指针的两大特点
- 指针本身就是一个对象,允许对指针赋值和拷贝;在生命周期内,可以先后指向几个不同的对象。
- 指针无需在定义时赋初值,但是没有被初始化时,会拥有一个不确定的值(野指针)
-
指针的4种状态
- 指向一个对象
- ❌ 指向紧邻对象所占空间的下一个位置
- ❌ 空指针,意味着指针没有指向任何对象
- ❌ 无效指针,(野指针)
-
指针的2、3、4状态可能对导致无法预计的后果,所以在使用指针时,最好给指针一个明确的对象
-
⭐️ *叫做解引用符
-
赋值永远改变的是等号左侧的对象
-
任何非0指针对应的if条件都是true,(前提是这些指针合法)
-
void*是一种特殊的指针类型,可用于存放任意对象的地址
-
⭐️ 不能直接操作void*指针所指的对象,因为不知道这个对象到底是什么类型,也就无法确定能在这个对象上做哪些操作
-
int* p //这种写法虽然没错,但是会引起误解 int* p, q; //这样写的你不知道q到底是指针,还是普通的int,但其实int*只对p产生作用,q还是int //你在写的时候,有两种写法可以选择 int *p1, *p2; //两个都是int的指针 /*每条语句只定义一个变量*/ int* p1; int* p2;
-
指向指针的指针