指针的基础、
c语言中的指针,可以使程序简洁,高效,紧凑。在计算机内部存储器中,没一个字节单元都有一个编号,称之为地址。这个地址就相当于门牌号。
简单的说指针就是一个地址。同样称之为指针变量。
指针变量、
指针它不是基本类型,而是一种构造类型,一般形式为:
类型说明符 变量名;
其中“*”表示一个指针变量,例如:
int *p;
以上代码表示p是一个指针变量,它的值是某个整形变量的地址,或者说p指向一个整形变量。
static int p1;//p1是指向静态整形变量的指针变量。
folat p2;//p2是指向浮点类的指针变量。
char p3;//p3是指向字符类型的指针变量。
指针变量的赋值、
变量的地址是由编译系统分配的,用户不知道具体地址,在c语言中提供了地址运算符“&”来表示变量的地址;
指针的运算、
指针运算时以指针变量所存放的值(地址量)作为运算量而进行的运算,指针的运算就是地址的计算。
指针的算术运算、
运算符 计算公式 意义
+ p+n 指针向地址大的方向移动n个数据
- p-n 指针向地址小的方向移动n个数据
++ p++或++p 指针向地址大的方向移动1个数据
-- p--或--p 指针向地址小的地方移动1和数据
- p-q 两个指针之间相隔数据元素的个数
注(不同数据类型的两个指针实行加减乘除运算是无意义的)。
指针的关系运算、
两指针之间的关系运算,表示它们指向的地址之间的关系运算。
运算符 说明 列子 运算符 说明 列子
> 大于 p>q <= 小于等于 p<=q
< 小于 p<q != 不等于 p!=q
>= 大于等于 p>=q == 等于 p==q
空指针、
指的是指针变量存了零号地址。注(访问零号地址存储的值或者修改其值,都是不允许的,运行程序是,会出现下面情况:Segmentation fault)
在对指针进行间接引用前,应该先判断该该指针是都为NULL,这样才不会出现错误。
const指针、
修饰最近一个变量,变量一旦被修饰,其值就不可能被改变。