*int 和*float 不能混用,他们的存储方式不同,整形数据和浮点型数据在内存中的存储方式不同
指针类型是有意义的,指针类型并没有决定指针变量所占内存空间大小,而是
(1)指针类型决定了指针在被解引用时访问内存空间几个字节
(2)指针类型决定了指针的步长,+1-1向后向前访问几个字节,即跳过几个字节
大端(存储)模式:是指数据的低位保存在内存的高地址中,而数据的高位,保存中内存的低地址中小端(存储)模式:是指数据的低位保存在内存的低地址中,而数据的高位,保存中内存的高地址中
野指针就是指针中保存的是无效的内存地址(随机的,不正确的,没有限制的)
成因:1.指针未初始化 2.指针越界访问(超出数组范围) 3.指针指向的空间释放
规避也指针的方法
1. 指针初始化, int* p = NULL;
2. 小心指针越界
3. 指针指向空间释放,及时置空
强制类型转换:(数据类型)变量
4. 指针使用之前检查有效性
特殊指针
void * 是一种特殊的指针类型,可用于存放任意对象的地址。
例如:
int a = 10;
void *p = &a;
缺点: 由于不知道地址中存放的是何种类型的数据,因此不能直接操作void*指针所指的对象
指针—指针 表示两个指针中间元素的个数
允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针比较,但是不允许与指向第一个元素之前的那个内存位置的指针进行比较。