指针在32位平台下,无论指针的类型是什么,sizeof(指针名)都是4
指针在64位平台下,无论指针的类型是什么,sizeof(指针名)都是8
空指针
int *select = 0; //空指针,就是值为0的指针。这块内存应用程序永远访问不到!是被操作系统预留的内存块。
int *select = NULL;//高逼格写法 NULL是c/c++指定的可以用来表示空指针的一个宏定义(0)
使用:
1.指针初始化为空指针,目的避免访问非法数据。
2.指针不在使用时,可设置为空指针。
3.表示这个指针还没有具体的指向,使用前进行合法性判断
指针的运算
1.指针p++的概念是在p当前地址的基础上,增加指针对应类型的字节大小 p = p+1*(sizeof(类型))
2.自减同理
3.*p-- . *和--是同一优先级,结合顺序从右到左,但是是后置减,所以待*p执行完后,再p--. 还可以加上括号 *(p--)
4.指针和整数之间的运算不是单纯的一个字节一个字节的增加,而是根据指针类型进行增减运算。
5.指针减指针:
以整数数组为例:指针减指针计算的是整数数组元素的偏移值(可以为负数)。而不是相差的字节数。就算不是同一数组也可以进行相减,结果为相差的字节数除以4。(但并没有意义)不同类型的指针不允许相减。
6.两个指针相加没有意义,且没有结果。
二级指针的用途
1.普通指针可以将变量通过参数“带入”函数内部,但没办法将内部变量“带出”函数。
2.二级指针不但可以将变量通过参数带入函数内部,也可以将函数内部变量“带出”到函数外部。