1.指针类型决定了:指针解引用的权限有多大:
例如
int a = 10;
int *p = &a;//这里10被存入a中
*p = 0;//这里a的值变为0
如果是
int a = 10;
char *p = &a;//这里10被存入a中
*p = 0;//这里a的第一位地址的值变为0
2。指针类型决定了,指针走一步,能走多远(步长)
3.指针未初始化会造成野指针 越界访问同样会造成野指针
当前不知道P应该初始化为什么值的时候,直接主动初始化为NULL(空指针)
指针减去指针得到的是两个指针之间的元素个数(前提是两个指针指向同一块空间 )
//数组名是数组首元素的地址
但有两个例外:1.sizeof(数组名)-数组名表示整个数组,计算的是整个数组的大小,单位是字节
2.&数组名 - 数组名表示整个数组,取出的是整个数组的地址;
二维数组的首元素是第一行;
数组指针:指向数组的指针
double * d[5];
double* (*pd)[5] = &d;//pd就是一个数组指针
数组名 != &数组名,但是 函数名 == &函数名
函数指针:
存放函数地址的指针
qsort函数:快速排序的实现
const放到*右边代表指针变量不能改变,放到*左边代表指针所指向的内容不能改变