其实指针严格意义上来说就是地址。
打个比方来说,一个房间号的门口上挂了一个房间号为102,这个102就是房间的地址。因此,地址就可形象化的称为“指针”。通过102就能找到这个房间,通过这它就能找到以它为地址的内存单元。
例如进行如下变量定义:
int a=10;
int b=20;
此时定义了两个整形数据变量,a,b便是内存变量名,而10和20是内存变量的值,当进行如下操作时又是什么意思呢?
int *p=&a; //定义p为整形指针变量,初始化保存整形变量a的地址
*p=100; //对指针解引用,将100赋值给a
p=&b; //将b的地址赋给了p
*p=200; //同样是解引用,将200赋值给b
//*p为间接访问符,又叫解引用,那么**p则为二级解引用,二级指针
int **p=&p; //定义二级指针
*pp=&a; //二级指针取a的地址
**pp=1000; //对*pp进行解引用,把1000的值赋给a
这里咱们来写一个程序来实现 通过指针变量来访问变量(间接访问变量)
#include<stdio.h>
int ZZ()
{
int a=10,b=20,c=30,*p; //定义p为整形指针变量并进行初始化赋值
p=&a; //判断并使p指向值最大的变量
if(b>*p) //对变量b与p指向的数据进行比较
p=&b;
if(c>*p) //对变量c与p指向的数据进行比较
p=&c;
printf("max=%d\n",*p); //间接访问p所指向的变量
return *p; //返回一个值
}
int main()
{
ZZ();
}
最终的运行结果当然是完成了 指针p对咱们定义的整形变量的访问,获得了数值。
指针不仅仅包括整型
char c='a';//即为字符变量保存字符值
int a=30;//整型变量保存整形值
float a=100;//浮点数据变量
在我们学习指针的过程中一定弄明白指针的定义和一些容易犯的过错,革命尚未成功,同志仍需努力。