c语言 交换函数

c语言交换函数的书写

原理

交换函数的对象是两个元素,一般意义上所说是对其位置交换,也就是在题中常见的对数值交换。两个元素交换需要借助第三个容器,可以理解为交换两个杯子中的可乐与雪碧,需要第三个杯子。初次接触编程的人可能认为交换是一个动作,但是人在做交换位置的操作时是使用两只手的,所以其实其中一只手可以理解为容器。如果想要直观理解交换你就只用一只手来进行交换水杯就可以理解了。
交换a与b,需要借助c。

基础代码

c=a;    //将c杯中的可乐倒入空杯c     
a=b;    //将b杯中的雪碧倒入空杯a
b=c;    //将c杯中的可乐倒入空杯b

独立包装

在c语言中对于代码的使用以及一些功能最后都是包装成独立的函数,最后在主函数中调用它,来达到对主程序的功能明了与可读性。在独立包装的函数中,外面需要注意传入的两个位置的元素。交换不能直接使用int 而是需要使用到指针,所以在函数独立包装的时候就需要注意函数的传入参数。同时函数内执行的时候也是需要注意这个*。

void swap(int *a,int *b){
    int c=0;
    c=*a;
    *a=*b;
    *b=c;
}

在程序中使用

在程序中使用时同样也需要注意一些地方,因为传入的时指针,指针指向地址,所以在使用时需要传入地址,一般对于普通的元素就需要取地址符&。

swap(&a,&b);

范例

采用一个按照从大到小的顺序输出操作者输入的任意3个整形数字,当然,对这个题目来说一定有更好的解法,我比较愚钝,写的这个。

#include 
//build a funtion of swap two int_elem
void swap(int *a,int *b){
    int c=0;
    c=*a;
    *a=*b;
    *b=c;
}

int main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    if(a<b)swap(&a,&b);
    if(a<c)swap(&a,&c);
    if(b<c)swap(&b,&c);
    printf("The list of input numbers print by size:%d  %d  %d",a,b,c);
    return 0;
}

本文是在本人写以上题目想到的使用c实现交换功能,以及一些可能不太容易注意到的事项。所以记录下来,以巩固记忆。
同时在c++中swap()函数也是标准模板库(STL)内的函数,如果在程序的头部声明调用该库即可不再编写,同时其能力要更加宽泛,还可以交换字符串,有兴趣去看看模板时如何写的。这里编写纯属兴趣。

你可能感兴趣的:(#,C语言,c语言,C语言)