定义一个Swap函数中,通过传递指针实现主函数两个数的数值交换
代码如下:
#include<stdio.h>
void Swap(int *p,int *q)
{
int temp;
temp=*p;
*p=*q;
*q=temp;
}
void main()
{
int a,b;
printf("请输入两个数:\n");
scanf("%d%d",&a,&b);
Swap(&a,&b);
printf("交换后的顺序为:%d %d\n",a,b);
}
注:
要想通过指针实现地址传递,解引用,不能只是简单交换两个指针变量内的地址,必须通过访问符*,访问到指针所指向的地址,进而进行一系列操作。
错误示范1:
void Swap(int *p1,int *p2)
{
int *temp;
temp=p1;
p1=p2;
p2=temp;
}
只进行了指针变量中内容的交换,并未交换指针所指向变量中的内容
错误示范2:
void Swap(int *p1,int *p2)
{
int *temp;
*temp=*p1;
*p1=*p2;
*p2=*temp;
}
这里的指针变量temp由于未初始化,就变成了一个野指针
野指针即 1)地址不存在 2)你没有权限访问
在执行到*temp=*p1; 由于temp地址不存在或用户无权限访问造成整个程序崩溃
所以在指针的应用中,一定记得先初始化指针