- 密码开锁
Int x=5342;/*变量x用于存放密码值5342*/
Int *p=NULL;/*定义整形指针变量P,NULL值为0,代表空指针*/
P=&x;/*将变量x的地址存储到p中*/
程序中定义了变量x来存放密码,在定义一个特殊的指针变量p,用于存放变量x的地址。这样既可以通过变量名x直接得到密码,也可以在不知道变量名的情况下,通过指针变量p所存放的地址找到密码值。
- 与直接使用变量x相比较,使用变量p访问变量x的过程实现了对变量x的见解操作。
- 在C语言中,把这种直接专门用来存放变量地址的变量称为“指针变量”,简称为指针。
- 定义指针变量的一般形式:
类型名 *指针变量名;
类型名指定指针变量所指向变量的类型,必须是有效的数据类型,如:int,float,char等。指针变量名是指针变量的名称,必须是一个合法的标识符。
- 定义指针变量要使用指针声明符:*
例如:int I,*p;
声明变量I是int型,变量p是指向int型变量的指针。
- 指针定义的例子
Int *p;
Char *cp;
Float *fp;
Double *dp1,*dp2;
- 对指针变量p赋值
P=&I;
P=0;
P=NULL;
P=(int*)1732;
第一条语句中的指针p被看做是指向变量i或存放变量i的地址,也就是将指针p和变量i关联起来。
第二条和第三条语句说明了怎样把特殊值0赋值给指针p,这时指针的值为NULL。常量NULL在系统文件stdio.h中被定义,其值为0,将他赋给指针时代表空指针,C语言中的空指针不指向任何单元。
最后一条语句中,使用强制类型转换(int*)来避免编译错误,表示p指向地址为1723的int型变量。
- 指针变量名是一个标识符,要按照C标识符的命名规则对指针变量进行命令。
- 指针变量的数据类型是他所指向的变量的类型,一般情况下一但指针变量的类型被确定后,他只能指向同种类型的变量。
- 在定义指针变量时需要使用指针声明标识符*,但指针声明符并不是指针的组成部分,例如:定义 int*p;说明p是指针变量,而不是*p。