c語言實現(xiàn)兩個值互相交換的函數(shù)
c語言中實現(xiàn)兩個值互換的函數(shù)。
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實現(xiàn)了互換,但是值傳遞是單向的,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語言實現(xiàn)兩數(shù)交換函數(shù)
我們可以引入一個簡單的中間變量t進行兩個數(shù)值交換。
int t; t=x; x=y; y=t;
然而在swap(int x,int y)被調用時,實參進行副本初始化,函數(shù)并沒有訪問調用傳遞的實參本身,因而也不會修改實參的值。
那么下列函數(shù)
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語言中怎么實現(xiàn)交換函數(shù)呢?
利用指針值交換實現(xiàn)
#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語言實現(xiàn)兩個值互相交換的函數(shù)的文章就介紹到這了,更多相關c語言兩個值互換函數(shù)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C++函數(shù)指針與指針函數(shù)有哪些關系和區(qū)別
函數(shù)指針是一個指針變量,它可以存儲函數(shù)的地址,然后使用函數(shù)指針,這篇文章主要介紹了C++中函數(shù)指針與指針函數(shù)有哪些關系和區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值2022-08-08C語言動態(tài)與靜態(tài)分別實現(xiàn)通訊錄詳細過程
這篇文章主要為大家介紹了C語言動態(tài)與靜態(tài)分別實現(xiàn)通訊錄,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-02-02c++ builder TreeView控件節(jié)點遍歷代碼
這篇文章介紹了c++ builder TreeView控件節(jié)點遍歷代碼,有需要的朋友可以參考一下2013-09-09C++構造函數(shù)+復制構造函數(shù)+重載等號運算符調用
這篇文章主要介紹了C++構造函數(shù)+復制構造函數(shù)+重載等號運算符調用,文章敘述詳細,具有一定的的參考價值,需要的小伙伴可以參考一下2022-03-03