指针 :指针就是地址
指针变量:存放地址的变量就叫做指针变量
刚开始接触到指针的时候指针最直观的用法就是可以在函数中通过形参传递仍然改变主函数中对应的变量的值。那么二级指针和一级指针的区别其实也是同一个道理,只不过传递的参数改变成为了指针,通过二级指针则可以修改指针变量指向的地址。下边就是具体的例子:
代码的结构目录如下:
头文件head.h的代码实现如下:
#include<stdio.h>
#include<stdlib.h>
//用于测使指针的函数
void test();
//用于交换两个值
void exchange(int a,int b);
void exchange1(int *a,int *b);
//用来测试二级指针的函数
void testtwo();
void change(int *p);
void change1(int **p);
head.c的实现代码如下:
#include"head.h"
void test()
{
int a=1,b=2;
printf("a=%d,\tb=%d\n",a,b);
exchange(a,b);
printf("a=%d,\tb=%d\n",a,b);
exchange1(&a,&b);
printf("a=%d,\tb=%d\n",a,b);
}
void exchange(int a,int b)
{
int temp=a;
a=b;
b=temp;
}
void exchange1(int *a,int *b)
{
int temp=*a;
*a=*b;
*b=temp;
}
void testtwo()
{
int a=3,*p=&a;
printf("p=%d\t*p=%d\n",p,*p);
change(p);
printf("p=%d\t*p=%d\n",p,*p);
change1(&p);
printf("p=%d\t*p=%d\n",p,*p);
}
void change(int *p)
{
int a=6;
p=&a;
}
void change1(int **p)
{
int a=6;
*p=&a;
}
main.c的实现代码如下:
#include"head.h"
int main()
{
printf("用来测试以及指针的用途:\n");
test();
printf("用来测试二级指针的用途:\n");
testtwo();
return 0;
}
运行结果如下: