C语言中如何交换两个变量的值

编程入门 行业动态 更新时间:2024-10-14 08:26:21

C语言中如何交换两个<a href=https://www.elefans.com/category/jswz/34/1771380.html style=变量的值"/>

C语言中如何交换两个变量的值

在C语言中,经常需要交换两个变量的值,那么如何去交换两个变量的值呢?方法其实是很多的。大体分为两个方面,不使用指针改变,和使用指针在自定义函数中改变。
不使用指针
这种情况在交换函数内两个局部变量的值,或者交换两个全局变量的值最为适用。

第一种是最为常用的,用第三个变量存储变量被修改之前的值。

#include <stdio.h>
int main()
{int a=10, b=5, tmp=0;tmp=a;a=b;b=tmp;return 0;
}

第二种就少见了,不需要使用第三个变量。

#include <stdio.h>
int main()
{int a=10, b=5;a=a+b;	//这里a的值是a+bb=a-b;	//这里b的值是(a+b)-b=aa=a-b;	//这里a的值是(a+b)-a=breturn 0;
}

第三种和第二种异曲同工,但是使用了位运算符。

#include <stdio.h>
int main()
{int a=10, b=5;a=a^b;	//这里a的值是a^bb=a^b;	//这里b的值是(a^b)^b=a^(b^b)=a^0=aa=a^b;	//这里a的值是(a^b)^a=b^(a^a)=b^0=breturn 0;
}

使用指针
使用指针都是为了在函数内部访问函数外的局部变量,这里先说两种错误的方法,然后再说两种正确的方法。

第一种,最为常见的错误,没有理解实参和形参的区别。指针变量也是形参,交换形参指针的值,只是交换了形参指针的指向,并没有对其指向的内存做修改。

void swap1(int *pa,int *pb)
{int *pt;pt = pa;pa = pb;pb = pt;
}

第二种,避开了没有对内存做修改的错误,但是在运行过程中几乎都会报错。

void swap2(int *pa,int *pb)
{int *pt;	//这里定义一个pt指针,//想用它指向的内存去存储变量修改前的值,//但是对于一个没有初始化的指针(指针变量的值是随机的,即野指针),//去访问它指向的内存是相当危险的,//我们无法知道它指向的内存是否有权限去访问,//以及访问过后是否会使程序崩溃,所以绝大多数情况下会出错。*pt = *pa;*pa = *pb;*pb = *pt;
}

第三种是正确的方法,也是最常用的。

void swap3(int *pa,int *pb)
{int t = 0;t = *pa;*pa = *pb;*pb = t;
}

第四种是正确的方法,是使用前面所说的位运算的方法,你也可以使用加法的方法。

void swap4(int *pa,int *pb)
{*pa ^= *pb;*pb ^= *pa;*pa ^= *Pb;
}

写的可能不够好哈(- _ -)

更多推荐

C语言中如何交换两个变量的值

本文发布于:2024-02-16 18:36:51,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1691078.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:变量   两个   语言

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!