啊我摔倒了..有沒(méi)有人扶我起來(lái)學(xué)習(xí)....
👱個(gè)人主頁(yè): 《 C G o d 的個(gè)人主頁(yè)》 \color{Darkorange}{《CGod的個(gè)人主頁(yè)》} 《CGod的個(gè)人主頁(yè)》交個(gè)朋友叭~
💒個(gè)人社區(qū): 《編程成神技術(shù)交流社區(qū)》 \color{Darkorange}{《編程成神技術(shù)交流社區(qū)》} 《編程成神技術(shù)交流社區(qū)》加入我們,一起高效學(xué)習(xí),收割好Offer叭~
🌱刷題鏈接: 《 L e e t C o d e 》 \color{Darkorange}{《LeetCode》} 《LeetCode》快速成長(zhǎng)的渠道哦~
void TestRef()
{int a = 10;
int& ra = a;//定義引用類型
printf("%p\n", &a);
printf("%p\n", &ra);
}
可以發(fā)現(xiàn),輸出的地址一致:
注意: 引用類型必須和引用實(shí)體是同種類型的,比如“波波豬”是人,并不是豬!
void TestRef()
{int a = 10;
// int& ra; // 該條語(yǔ)句編譯時(shí)會(huì)出錯(cuò)
int& ra = a;
int& rra = a;
printf("%p %p %p\n", &a, &ra, &rra);
}
二、常引用輸出:
void TestConstRef()
{const int a = 10;
//int& ra = a; // 該語(yǔ)句編譯時(shí)會(huì)出錯(cuò),a為常量
const int& ra = a;
// int& b = 10; // 該語(yǔ)句編譯時(shí)會(huì)出錯(cuò),b為常量
const int& b = 10;
}
double d = 12.34;
//int& rd = d; // 該語(yǔ)句編譯時(shí)會(huì)出錯(cuò),類型不同
const int& rd = d;
void Swap(int& left, int& right)
{int temp = left;
left = right;
right = temp;
}
3.2 做返回值可以看出,引用可以代替指針的一些功能,且不用取地址,方便了一些
int& Count()
{static int n = 0;
n++;
// ...
return n;
}
int& Add(int a, int b)
{int c = a + b;
return c;
}
int main()
{int& ret = Add(1, 2);
Add(3, 4);
cout<< "Add(1, 2) is :"<< ret<
輸出:
注意: 如果函數(shù)返回時(shí),出了函數(shù)作用域,如果返回對(duì)象還在(還沒(méi)還給系統(tǒng)),則可以使用引用返回,如果已經(jīng)還給系統(tǒng)了,則必須使用傳值返回
3.3 傳值、傳引用效率比較#includeusing namespace std;
#includestruct A {int a[10000]; };
void TestFunc1(A a) {}
void TestFunc2(A& a) {}
void TestRefAndValue()
{A a;
// 以值作為函數(shù)參數(shù)
size_t begin1 = clock();
for (size_t i = 0; i< 10000; ++i)
TestFunc1(a);
size_t end1 = clock();
// 以引用作為函數(shù)參數(shù)
size_t begin2 = clock();
for (size_t i = 0; i< 10000; ++i)
TestFunc2(a);
size_t end2 = clock();
// 分別計(jì)算兩個(gè)函數(shù)運(yùn)行結(jié)束后的時(shí)間
cout<< "TestFunc1(A)-time:"<< end1 - begin1<< endl;
cout<< "TestFunc2(A&)-time:"<< end2 - begin2<< endl;
}
int main()
{TestRefAndValue();
return 0;
}
四、引用和指針的區(qū)別輸出:發(fā)現(xiàn)傳值和指針在作為傳參以及返回值類型上效率相差很大
int main()
{int a = 10;
int& ra = a;
cout<< "&a = "<< &a<< endl;
cout<< "&ra = "<< &ra<< endl;
return 0;
}
輸出:
int main()
{int a = 10;
int& ra = a;
ra = 20;
int* pa = &a;
*pa = 20;
return 0;
}
我們來(lái)看下引用和指針的匯編代碼對(duì)比:
五、引用和指針的不同點(diǎn)你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)站欄目:C++·入門·04|引用-創(chuàng)新互聯(lián)
文章起源:http://jinyejixie.com/article0/peeoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、網(wǎng)站設(shè)計(jì)公司、ChatGPT、網(wǎng)站策劃、網(wǎng)站排名、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容