C语言指针作为函数参数
了解了指针的基本概念,接下来让我们看看如何把指针作为函数的参数,来交换两个变量的值。
C语言代码清单 1:指针作为函数的参数间接交换两个变量的值
运行结果为:
通过
图 1:函数调用中指针的传递
因此,调用 scanf( ) 函数实际上就是将读取到的值存入内存地址指向的变量对象当中(见图 2)。
图 2:scanf( ) 函数的调用和 printf( ) 函数的调用
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
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)。图 1:函数调用中指针的传递
指针和 scanf() 函数
在使用 scanf( ) 函数从键盘读取数据时,变量名前必须加上一个特殊符号&
,这个符号就是取址符。实际上 scanf( ) 函数接收的就是指针(具有内存地址的“值”),由该指针所指的对象(变量)保存从键盘输入的值。因此,调用 scanf( ) 函数实际上就是将读取到的值存入内存地址指向的变量对象当中(见图 2)。
图 2:scanf( ) 函数的调用和 printf( ) 函数的调用
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。