当前位置:   article > 正文

指针交换三种

指针交换
#include <stdio.h>

void func(int *p1,int *p2);

main()
{
	int a,b;
	int *p1 = &a,*p2 = &b;
	scanf("%d%d",p1,p2);
	func(p1,p2);
	printf("a=%d,b=%d",a,b);
}

void func(int *p1,int *p2)
{
	int temp;
	temp = *p1;
	*p1 = *p2;
	*p2 = temp; 
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

输入的 2 5
结果是 a=5 b=2

#include <stdio.h>

void func(int *p1,int *p2);

main()
{
	int a,b;
	int *p1 = &a,*p2 = &b;
	scanf("%d%d",p1,p2);
	func(p1,p2);
	printf("a=%d,b=%d",a,b);
}

void func(int *p1,int *p2)
{
	int *temp = p1;
	p1 = p2;
	p2 = temp; 
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

输入的 2 5
结果是 a=2 b=5
这个是把地址交换 没有进入房子把值交换
把房子里值换掉需要有*
那就是说 除了把地址传给对方 对方还得用* 才能影响实参
这个形参传不回来
形参没有改变实参

#include <stdio.h>

void func(int *p1,int *p2);

main()
{
	int a,b;
	int *p1 = &a,*p2 = &b;
	scanf("%d%d",p1,p2);
	func(p1,p2);
	printf("a=%d,b=%d",a,b);
}

void func(int *p1,int *p2)
{
	int *temp;
	*temp = *p1;
	*p1 = *p2;
	*p2 = temp; 
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

这个编译失败
原因是temp指针变量只定义没有初始化

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

闽ICP备14008679号