利用指针,实现函数值的交换

定义一个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地址不存在或用户无权限访问造成整个程序崩溃

所以在指针的应用中,一定记得先初始化指针

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值