当前位置:   article > 正文

指针实现简单变量交换_使用指针交换两个变量的值简单代码怎么写

使用指针交换两个变量的值简单代码怎么写
通过指针变量作形参的函数实现两数交换:
正确案例分析:
#include<stdio.h>
int main()
{
	void max(int *,int *);//调用函数之前要声明,没有返回值,用void修饰
	int a,b,* p1,* p2;
	printf("请输入两个整数:");
	scanf("%d%d",&a,&b);
	p1=&a; p2=&b;
	printf("排序前输出:%d,%d\n",* p1,* p2);
	if(a<b) max(p1,p2);
	printf("排序后输出:%d,%d",* p1,* p2);
}
void max(int * p1,int * p2)//传入实参地址,所以实参和形参指向同一存储空间,只能实现单向的值传递,即只能改变指针所指向的变量的值。
{
	int  p3;//装指针所指向的变量的值。
	p3=*p1;*p1=*p2;*p2=p3;//用整型变量作中间变量,直接将指针变量指向元素值进行交换 
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
错误代码分析:
void max(int * p1,int * p2)//实参和形参变量的数据传递是单向的"值传递",
{
	int * p3; 
	p3=p1;p1=p2;p2=p3;//不能通过调用函数改变指针变量的值,只能改变实参指针变量所指向的变量的值,即*指针变量 
}
  • 1
  • 2
  • 3
  • 4
  • 5
总结:

初学者可能都会有这样的疑惑,本人觉着有必要总结分享下,记住一条:
值传递只能改变实参指针变量所指向的变量的值,不能改变指向的变量。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/dbjkl/article/detail/63011
推荐阅读
相关标签
  

闽ICP备14008679号