c語言實現兩個值互相交換的函數

c語言中實現兩個值互換的函數。

1、

#include <stdio.h>

void swap(int n1, int n2)
{
    int tmp;
    tmp = n1;
    n1 = n2;
    n2 = tmp;
}

int main(void)
{
    int a, b;
    puts("please input two integers.");
    printf("a = "); scanf("%d", &a);
    printf("b = "); scanf("%d", &b);
    
    swap(a, b);  //a、b作為實參傳遞給n1和n2,n1和n2實現瞭互換,但是值傳遞是單向的,n1和n2的值並不能返回到實參a、b中,因此a,b還是原來的值 
    
    printf("swapped a = %d\n", a);
    printf("swapped b = %d\n", b);
    
    return 0;
}

2、將指針作為實參,可以對該指針指向的對象,也就是實參進行修改

#include <stdio.h>

void swap2(int *n1, int *n2)
{
    int tmp;
    tmp = *n1;
    *n1 = *n2;
    *n2 = tmp;    
} 

int main(void)
{
    int a, b;
    puts("please input two integers.");
    printf("a = "); scanf("%d", &a);
    printf("b = "); scanf("%d", &b);
    
    swap2(&a, &b); //將a和b的指針作為實參傳遞給指針變量n1和n2,n1和n2稱為指向a和b的指針,*n1和*n2分別為a和b的別名,對*n1和n2進行修改,就相當於對a和b進行修改 
    
    printf("\nswapped a = %d\n",a);
    printf("swapped b = %d\n", b);
    
    return 0;
}

ps:下面看下C語言實現兩數交換函數

我們可以引入一個簡單的中間變量t進行兩個數值交換。

int t;
t=x;
x=y;
y=t;

然而在swap(int x,int y)被調用時,實參進行副本初始化,函數並沒有訪問調用傳遞的實參本身,因而也不會修改實參的值。
那麼下列函數

void swap(int x, int y)
{
       int t;
       t=x;
       x=y;
       y=t;
}

將達不到交換的目的。

在C++中我們可以使用引用形參達到目的:

void swap(int &x, int &y)
{
       int t;
       t=x;
       x=y;
       y=t;
}

那麼在C語言中怎麼實現交換函數呢?
利用指針值交換實現

#include<stdio.h>
void swap(int *x, int *y)
{
 int t;
    t=*x;
 *x=*y;
 *y=t;
}
int main()
{
 int a=1,b=2;
 swap(&a,&b);
 printf("a=%d,b=%d",a,b);
 return 0;
}

到此這篇關於c語言實現兩個值互相交換的函數的文章就介紹到這瞭,更多相關c語言兩個值互換函數內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: