c語言swap(a,b)值交換的4種實(shí)現(xiàn)方法
這篇文章所要表述的內(nèi)容的確很簡單,寫之前,我糾結(jié)了很久:寫與不寫。平常swap(a,b)值交換,我們基本都是使用第一種方法,對于數(shù)學(xué)較好的人,可能會想到第二種方法,想到時(shí),一定感覺很好,。對于匯編或?qū)ξ挥欣斫獾娜?,可能會想到第三種方法,這個(gè)方法很妙。但,真正促使我寫這篇文章的,還是第四種方法,妙,真的很妙,先(b = a),我是真沒想到,我想,這么好的東西,盡管簡單,但值得發(fā)表,以此共享。
swap(a,b)值交換的四種方法:
void swap(int &a, int &b)
{
//方法一:
int tmp = 0;
tmp = b;
b = a;
a = tmp;
//方法二:
//a = a+b;
//b = a-b;
//a = a -b;
//方法三:
//a ^= b ^= a ^= b;
//方法四:
//a = a+b-(b=a);
}
int main(void)
{
int a = 3;
int b = 4;
printf("before swap: a = %d, b = %d\n", a, b);
swap(a, b);
printf("after swap: a = %d, b = %d\n", a, b);
return 0;
}
結(jié)果:
before swap: a = 3, b = 4
after swap: a = 4, b = 3
關(guān)于傳參方式有三種:值傳參、地址傳參、引用傳參(C++方法),上面使用的是第三種,引用傳參,因?yàn)檫@種傳參方式使得swap里面實(shí)現(xiàn)更為直觀。當(dāng)然,也可以使用第二種傳參方式地址傳參,不過,值傳參是不行的哦。
相關(guān)文章
C++ using namespace std 用法深入解析
以下是對C++中using namespace std的用法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下2013-07-07
C語言實(shí)現(xiàn)學(xué)生宿舍管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)學(xué)生宿舍管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
Linux下g++編譯與使用靜態(tài)庫和動(dòng)態(tài)庫的方法
下面小編就為大家?guī)硪黄狶inux下g++編譯與使用靜態(tài)庫和動(dòng)態(tài)庫的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05
C語言中typedef的用法以及#define區(qū)別詳解
這篇文章主要給大家介紹了關(guān)于C語言中typedef用法以及#define區(qū)別的相關(guān)資料,typedef 是用來定義一種類型的新別名的,它不同于宏(#define),不是簡單的字符串替換。而#define只是簡單的字符串替換(原地?cái)U(kuò)展),需要的朋友可以參考下2021-07-07
在C++中高效使用和處理Json格式數(shù)據(jù)的示例代碼
最近的項(xiàng)目在用c處理后臺的數(shù)據(jù)時(shí),因?yàn)楹枚嗤獠拷涌诙荚谑褂肑son格式作為返回的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)描述,如何在c中高效使用和處理Json格式的數(shù)據(jù)就成為了必須要解決的問題,需要的朋友可以參考下2023-11-11

