指针的用法其实也不难,指针主要解决什么问题呢?
当一个函数的改变需要影响另一个函数,这时候需要用到指针。
例如:
void Fun(int **pp)
{
*pp = NULL;
}
int main()
{
int a = 10;
int *p = &a;
Fun(&p);
printf("%d\n",*p);
return 0;
}
其中Fun函数影响了主函数中变量的值。如果使用一级指针则a的值不会受到Fun函数的影响,需要一个二级指针来指向一级指针,然后函数才能正常使用。这个例子说明了一个函数想要改变另一个函数,需要用到指针,以及该怎样使用指针。
然而指针需要两个条件来使用:
1、传指针
和写函数一样,传指针需要在参数列表里写指针的类型以及名字。
2、解引用
int main()
{
int a = 10;
int b = 20;
int *p = &a; //定义整形指针,并且用来保存a的地址。
*p = 100; //这句语句等同于a= 100;
p = &b; //指针用来保存b的地址。
*p = 200; //这句语句等同于b = 200;
int **pp = &p; //定义二级整型指针,并且用来保存一级指针p的地址。
*pp = &a; //这句语句等同于p = &a;
**pp = 1000; //这句语句等同于a = 1000;
*pp = &b; //这句语句等同于p = &b;
**pp = 2000; //这句语句等同于b = 2000;
return 0;
}
在使用指针时就叫做解引用,其中注意指针其实就是地址,所以一级指针一般存放变量的地址使用一级指针便是使用变量,使用二级指针来保存一级指针的地址,解一次引用就是使用一级指针,解两次引用就是使用变量。
这就是指针的基本使用方式。