前言
指针是C语言在所有高级语言中特有的,它的知识点有点绕,但功能也十分强大。今天介绍一个指针经典程序---用指针变量互换两个数字。
话不多说,直接上代码
1.代码如下
# include <stdio.h>
//void huhuan(int *, int *)//声明的时候可以不用形参
void huhuan(int *p, int *q)
{
int t;
t = *p;
*p = *q;
*q = t;
return;
}
int main()
{
int a = 5, b = 3;
huhuan(&a, &b);//必须要把a和b的地址赋给p和q
printf("%d %d", a, b);
return 0;
}
2.输出结果
结果如下:
3 5
--------------------------------
Process exited after 0.0227 seconds with return value 0
请按任意键继续. . .
总结
1.指针变量是可以储存其他变量地址的变量,指针就是地址,首先把这两个概念要区分清楚。那么在把a和b的值发送给huhuan函数中变量p和q的时候要发送它们的地址,因为p和q是指针变量,发送完成以后,p储存的便是a的地址,q同理,那么*p就是a,*q就是b。
2.开始执行huhuan函数时,系统会为huhuan函数分配一块空间,同时main函数也有一块空间,各函数空间内有各自变量分别的空间,那么main函数和huhuan函数是两块不同的内存空间 X Y,其中X有a和b两个变量,Y有t,p,q三个变量
把a的地址赋给p,p的地址(p在Y空间有自己的地址)不是a的地址,p里面储存(储存是指p地址的内存单元储存)的是a的地址,那么t定义了以后就会有t的地址和空间,*是一种运算方式
t = *p相当于把a的值给t,*p = *q相当于在Y空间操作X空间的变量,这个操作是把b的值赋给a,这个如果没有指针是做不到Y空间操作X空间的变量,*q = t是指把t中的值通过q做*运算
来让X空间的b变量的值变为t的值,这样就完成了把a和b的值互换。