栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言通过指针进行数据交换

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言通过指针进行数据交换

#include
void swap(int *a,int *b){
	int *t;
	t=a;
	a=b;
	b=t;
}
int main(){
	int x=3,y=5,*p=&x,*q=&y;
	swap(p,q);
	printf("%d,%d,%d,%d",*p,*q,x,y);
}
#include
void swap(int **a,int **b){
	int *t;
	t=*a;
	*a=*b;
	*b=t;
}
int main(){
	int x=3,y=5,*p=&x,*q=&y;
	swap(&p,&q);
	printf("%d,%d,%d,%d",*p,*q,x,y);
}

上路两段代码有小小的不同,而这不同就会造成最后*p和*q的输出值不同

第一段代码会输出3,5,3,5

第二段代码会输出5,3,3,5

第一段代码中确实通过传参将x,y的地址传递过去了,也进行了交换但是为什么值没有变化呢,因为传递的是p,q指针中存储的地址,这是一个值,众所周知通过参数值传递,函数不能改变原先的值,也就是说函数运行完,p依旧指向x,q依旧指向y。

如果要通过函数改变值那就是要把存储要改变的值的地址传递过去就有了第二段代码,将p,q的地址值传递过去,然后通过将两者地址中存的x,y地址互换达到值交换的目的,要注意此时x,y的值没有变化。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/655818.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号