c語言實(shí)現(xiàn)兩個(gè)值互相交換的函數(shù)
c語言中實(shí)現(xiàn)兩個(gè)值互換的函數(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作為實(shí)參傳遞給n1和n2,n1和n2實(shí)現(xiàn)了互換,但是值傳遞是單向的,n1和n2的值并不能返回到實(shí)參a、b中,因此a,b還是原來的值 printf("swapped a = %d\n", a); printf("swapped b = %d\n", b); return 0; }
2、將指針作為實(shí)參,可以對(duì)該指針指向的對(duì)象,也就是實(shí)參進(jìn)行修改
#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的指針作為實(shí)參傳遞給指針變量n1和n2,n1和n2稱為指向a和b的指針,*n1和*n2分別為a和b的別名,對(duì)*n1和n2進(jìn)行修改,就相當(dāng)于對(duì)a和b進(jìn)行修改 printf("\nswapped a = %d\n",a); printf("swapped b = %d\n", b); return 0; }
ps:下面看下C語言實(shí)現(xiàn)兩數(shù)交換函數(shù)
我們可以引入一個(gè)簡單的中間變量t進(jìn)行兩個(gè)數(shù)值交換。
int t; t=x; x=y; y=t;
然而在swap(int x,int y)被調(diào)用時(shí),實(shí)參進(jìn)行副本初始化,函數(shù)并沒有訪問調(diào)用傳遞的實(shí)參本身,因而也不會(huì)修改實(shí)參的值。
那么下列函數(shù)
void swap(int x, int y) { int t; t=x; x=y; y=t; }
將達(dá)不到交換的目的。
在C++中我們可以使用引用形參達(dá)到目的:
void swap(int &x, int &y) { int t; t=x; x=y; y=t; }
那么在C語言中怎么實(shí)現(xiàn)交換函數(shù)呢?
利用指針值交換實(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; }
到此這篇關(guān)于c語言實(shí)現(xiàn)兩個(gè)值互相交換的函數(shù)的文章就介紹到這了,更多相關(guān)c語言兩個(gè)值互換函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言中數(shù)據(jù)結(jié)構(gòu)之鏈?zhǔn)交鶖?shù)排序
這篇文章主要介紹了C語言中數(shù)據(jù)結(jié)構(gòu)之鏈?zhǔn)交鶖?shù)排序的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-09-09C++函數(shù)指針與指針函數(shù)有哪些關(guān)系和區(qū)別
函數(shù)指針是一個(gè)指針變量,它可以存儲(chǔ)函數(shù)的地址,然后使用函數(shù)指針,這篇文章主要介紹了C++中函數(shù)指針與指針函數(shù)有哪些關(guān)系和區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值2022-08-08C語言動(dòng)態(tài)與靜態(tài)分別實(shí)現(xiàn)通訊錄詳細(xì)過程
這篇文章主要為大家介紹了C語言動(dòng)態(tài)與靜態(tài)分別實(shí)現(xiàn)通訊錄,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-02-02c++ builder TreeView控件節(jié)點(diǎn)遍歷代碼
這篇文章介紹了c++ builder TreeView控件節(jié)點(diǎn)遍歷代碼,有需要的朋友可以參考一下2013-09-09C++構(gòu)造函數(shù)+復(fù)制構(gòu)造函數(shù)+重載等號(hào)運(yùn)算符調(diào)用
這篇文章主要介紹了C++構(gòu)造函數(shù)+復(fù)制構(gòu)造函數(shù)+重載等號(hào)運(yùn)算符調(diào)用,文章敘述詳細(xì),具有一定的的參考價(jià)值,需要的小伙伴可以參考一下2022-03-03Flutter應(yīng)用Windows平臺(tái)接入實(shí)踐詳解
這篇文章主要為大家介紹了Flutter應(yīng)用Windows平臺(tái)接入實(shí)踐詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02