关于利用指针进行数字互换笔记

关于利用指针进行数字互换笔记

第一次写CSDN博客,如有错误请多多指教

首先

先写出不利用函数实现的数字互换


#include<stdio.h>

int main(void)
{
	int a=3;
	int b=9;
	int temp;
	//进行a和b参数互换
	temp = a;
	a=b;
	b=temp;
	printf("a=%d\n,b=%d\n ",a,b);//输出a和b结果
	
	
}
![成功交换参数](https://img-blog.csdnimg.cn/20190217153011219.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTU5ODcxNA==,size_16,color_FFFFFF,t_70)


## 利用这一原理,尝试利用函数写这个程序

#include<stdio.h>

void Swap(int,int);

int main(void)
{
	int a = 3;
	int b =9;
	Swap(a,b);
	printf("a=%d\nb=%d\n",a,b); 
return 0;
}
void Swap(int a,int b)
{
	int t;
	t=a;
	a=b;
	b=t;
	return;
}


![运行结果并没有对参数进行互换!](https://img-blog.csdnimg.cn/20190217150318633.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTU5ODcxNA==,size_16,color_FFFFFF,t_70)## **经过一番研究得知**
主函数传递实参到Swap函数形参当中,经过函数处理后,Swap内形参由此前的a=3,b=9变为a=9,b=3

 出现这种情况的原因是因为Swap函数与主函数内的a和b并不是一样的,两者都属于局部变量,使用范围仅用于本函数内部;
 并且当Swap函数执行完毕后,在执行下一句输出之前,静态空间已经被释放。
 

## 利用指针可以完美解决这个问题

#include<stdio.h>//调用标准库
void Swap(int *,int *);//函数前置声明

int main(void)
{
int a = 3;
int b = 9;
Swap(&a,&b);// 调用函数并取出指针地址
printf(“a=%d\nb=%d\n”,a,b);
return 0;
}
void Swap(int * t1,int * t2)
{
int temp;// 互换*t1 *t2,temp使用int类型,int *类型与形参类型不符,编译报错
temp = t1;// t1是int * 类型, t1是int类型
*t1 = *t2; // *t1代表的是以t1的数据为地址的变量
*t2 = temp;
return;
}
成功把a和b的值互换



猜你喜欢

转载自blog.csdn.net/weixin_41598714/article/details/87534138
今日推荐