定义指针变量的一般形式:
基类型 *指针的变量名
如:int *p(此后指针变量只能装整型)此处的*为类型说明符
其余地方出现的 * 为指针运算符,要求操作数为指针
例:
该代码中,指针变量p指向i的地址,*p 为 i 本身
i= 100 为直接访问;*p = 100为间接访问
例:求两数最大值(通过指针形参改变实参的值)
指针在程序中访问地址主要包括以下步骤:
1、通过指针变量中的值到内存空间中定位;
2.从定位处开始向后偏移sizeof(基类型);
3.将偏移好的那部分内存空间当作是一个基类型变量来看
重要性质:
1.在64位系统中,指针占8个字节;在32位操作系统中,指针占4个字节;
2.指针变量也有地址
3.保存地址必须与基类型相同
4.清楚指针变量的指向,必须要有指向,否则为“野”指针 指向随机数,会造成程序崩溃
如图
若想用*t,则需要引入一个变量,让t指向
可优化为
用指针判断操作系统为大端还是小端模式
指针强制类型转换
int *p,p+n后 地址将向后偏移n *sizeof(基类型)
*&可以抵消,如下:
整型不能做指针运算,最后一行将会引发报错
用指针实现数组逆序:
数组求和
三种排序
#define NULL 0(不带参宏)
把指针变量改为空指针 代表指针的一种状态,表示当前指针变量p不可访问
例:判断是否为空指针
用递归实现数组打印