书写方式:(指针类型)*p
例:int *p 就是int类型的指针,int * * p就是int指针型的指针
指针变量的类型决定解引用访问的权限,例如int类型访问四个字节,char访问一个字节
指针变量的类型也决定指针的步幅int类型指针+1步幅就是四个地址单元
不同类型的指针大小是一样的
不同位数的操作系统指针大小不同
野指针出现的情况:指针未初始化,数组越界,指针指向的内存单元被回收
如何规避野指针:指针不用时或内存单元回收时置为null,以及避免指针越界
指针+-整数相当于改变指针指向的位置改变
指针-指针相当于两个指针之间的元素个数
指针关系运算:指针的比较例如p1>p2那么p1就在p2的右边通过比较进行一些运算
允许指针指向的地址与数组最后一个元素后一个地址进行比较但不允许与第一个元素的前一个地址进行比较
数组名即数组首地址,可以通过数组名访问数组内全部元素
arr[n]在编译器内会被翻译成*(arr(首地址)+n)所以同理n[arr]==*(n+arr)产生的结果是相同的,简单来说就是利用了编译器的机制
二级指针存储的是一级指针对象的起始地址所以假设一个二级指针int ** pp,对他进行解应用得到是一级指针对象的起始地址,**pp解引用两次得到的是一级指针对象存储的地址
int main()
{
int a = 10;
int * p = &a;
int ** pp = &p;
printf("% p,%p",pp,*pp);
return 0;
}