了解了指针的基本概念,接下来让我们看看如何把指针作为函数的参数,来交换两个变量的值。
C语言代码清单 1:指针作为函数的参数间接交换两个变量的值
#include <stdio.h>
#include <stdlib.h>
/*--自定义函数:将指针px、py指向的变量的值进行互换--*/
void swap(int *px, int *py)
{
int temp = *px;
*px = *py;
*py = temp;
}
/*--主函数--*/
int main( )
{
system("color 70");
int dA, dB;
puts("请输入两个整数:");
printf("整数dA:");
scanf("%d",&dA);
printf("整数dB:");
scanf("%d",&dB);
swap(&dA, &dB);
puts("互换以后的变量值:");
printf(" dA = %d\n",dA);
printf(" dB = %d\n\n",dB);
system("pause");
return 0;
}
运行结果为:
请输入两个整数:
整数dA:10
整数dB:8
互换以后的变量值:
dA = 8
dB = 10
通过swap(&dA,&dB);调用 swap( ) 函数后,作为实参的变量地址 &dA 和 &dB 分别被赋值给定义为指针的形参变量 px 和 py,此时指针变量 px 和 py 分别指向变量 dA 和 dB,*px 和 *py 则成为 dA 和 dB 的别名。因而,在 swap( ) 函数内交换 *px 和 *py 的值,就相当于变量 dA 和 dB 的值进行了交换(见图 1)。
在使用 scanf( ) 函数从键盘读取数据时,变量名前必须加上一个特殊符号&,这个符号就是取址符。实际上 scanf( ) 函数接收的就是指针(具有内存地址的“值”),由该指针所指的对象(变量)保存从键盘输入的值。
因此,调用 scanf( ) 函数实际上就是将读取到的值存入内存地址指向的变量对象当中(见图 2)。