1.指针就是变量,存放地址的变量。
2.指针在32位机器上是4个字节,在64位机器上是8个字节。3.指针类型在指针进行解引用的时候,能决定指针访问的空间大小。也决定了步长。
int*p: *p能访问4个字节;p+1 跳过4个字节
char*p: *p能访问1个字节;p+1 跳过1个字节
double*p *p能访问8个字节。p+1跳过8个字节。
4.野指针:1——指针未初始化,会产生一个随机值,随机找个地址进行插入,可能造成系统死机。
2——指针超出访问,指针访问越界。
3——指针指向的空间释放,当你保存在动态存储区时,在访问结束后,此内存已经还给了系统,传给指针后,这个地址已经不能使用。
5.如何规避野指针:
1.指针初始化。
2.小心指针越界。
3.当指针指向有意义的数据时,就将指针置空(NULL)让这个指针中的数据无法被改写。
4.指针使用之前检查有效性。
6.在同一块空间中指针减去指针,得到的是中间元素的个数。
小地址减大地址为 -(中间元素的个数)。
7.c语言标准规定:允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针比较,但是不允许与指向第一个元素之前的那个内存位置的指针进行比较。
8.二级指针:将一个变量的地址存在一个指针中,依次套娃,可形成三级、四级指针。
9.指针数组: int* arr[ ] = {&a,&b&c};