C语言中swap函数的使用注意事项-创新互联

先给出错误示范

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名雅安服务器托管、营销软件、网站建设、立山网站维护、网站推广。
#includevoid swap(int a,int b)
{
	int temp=a;
    a=b;
	b=temp;
}
int main()
{
	int a,b;
	int temp;
	a=1;
	b=2;
	printf("a=%d b=%d\n",a,b);
	swap(a,b);
	printf("a=%d b=%d",a,b);
	return 0;
}

大多初学者使用时都会犯这样的错误,那么为什么输出来的两次中a,b的值并没有发生交换呢

这里是因为如上的交换我们只改变了在swap函数里的值,也就是只改变了形参,待其回到main即会复原,所以我们需要用指针把两个int的地址传过去,如下

#includevoid swap(int *a,int *b)
{
	int temp=*a;
	*a=*b;
	*b=temp;
}
int main()
{
	int a,b;
	int temp;
	a=1;
	b=2;
	printf("a=%d b=%d\n",a,b);
	swap(&a,&b);
	printf("a=%d b=%d",a,b);
	return 0;
}

如果不使用指针,我们也可以把输出放在swap函数内部,如下:

#includevoid swap(int a,int b)
{
	int temp=a;
	a=b;
	b=temp;
	printf("a=%d b=%d",a,b);//改变后 
}
int main()
{
	int a,b;
	int temp;
	a=1;
	b=2;
	printf("a=%d b=%d\n",a,b);//改变前 
	swap(a,b);
	return 0;
}

以上两种方法即可帮助我们成功交换两个值

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章名称:C语言中swap函数的使用注意事项-创新互联
分享地址:http://pwwzsj.com/article/csipgh.html