指针做参数
视频锁定
{$ currentTime | date:'mm:ss' $}
{$ timeLeft | date:'mm:ss' $}
如果用指针作参数上个练习中遇到的难题就会迎刃而解。指针作参数是指我们在定义参数时和调用参数时都必须用指针来做参数。下面我们来看看如何用指针来实现两个数字的置换。
#include <stdio.h>
void swap(int *p,int *q);
int main()
{
int *p1 = 10,*p2 = 20;
printf("main函数调用swap函数前*p1:%d,*p2:%d\n",*p1,*p2);
swap(p1,p2);
printf("main函数调用swap函数后*p1:%d,*p2:%d\n",*p1,*p2);
return 0;
}
swap(int *p,int *q)
{
int temp;
/*将p和q的值置换*/
temp=*p;
*p=*q;
*q=temp;
printf("swap函数中置换后的*p:%d,*q:%d\n",*p,*q);
}
在练习区运行上面的代码,看看指针p1和p2的值是否发生了置换?
是不是非常神奇这次竟然置换成功了,main
函数中调用swap
函数时使用的是指针,而且这个指针不带*
(这点非常重要),我们可以把这个时候的指针想象成两个包含着果实的容器p1和p2,容器就是地址,果实就是10和20.当容器传到swap
中时,容器换了个名字叫p和q,在这里这两个容器中的果实进行了置换,然后把这两个容器传回了main
函数中,在main
函数一打开这两个容器发现p1和p2的里面的值置换了。
通过上面的形容我们知道如果想要把在swap
中置换的数值传回main
函数中,必须用传地址的方式,其实除了指针,我们还可以使用&符号,int a变量,&a代表的就是a的地址,但是&只能是在main
函数调用时使用,而不能在实现swap
函数时使用。
在线练习
{$ activeFileHint $}