帶你了解C 初階之引用

2022-09-27 17:33:09 字數 2457 閱讀 2537

目錄

引用不是新定義乙個變數,而是給已存在變數取了乙個別名,語法理解上程式不會為引用變數開闢記憶體空間,它和它引用的變數共用同一塊記憶體空間

比如:李逵,在家稱為"鐵牛",江湖上人稱"黑旋風"

型別& 引用變數名(物件名) = 引用實體

int main()

注意int main()

void testconstref()

小結1.我能否滿足你變成別名的條件:可以不變或者縮小你讀寫的許可權 (const int -> const int 或 int -> const int),而不能放大你讀寫的許可權 (const int -> int)

2.別名的意義可以改變,並不是每個別名都跟原名有一樣的許可權

3.不能給型別不同的變數起別名的真正原因不是型別不同,而是隱式型別轉換後具有常性了

常引用的意義 (舉例棧)

typedef struct stack

st;void initstack(st& s)//傳引用是為了形參的改變影響實參

void printstack(const st& s)//1.傳引用是為了減少拷貝 2. 同時保護實參不會被修改

void test(const int& n)//即可以接收變數,也可以接收常量

int main()

小結1.函式傳參如果想減少拷貝使用引用傳參,如果函式中不改變這個引數最好使用 const 引用傳參

2.const 引用的好處是保護實參,避免被誤改,且它可以傳普通物件也可以傳 const 物件

void swap1(int* p1, int* p2)

void swap2(int& rx, int& ry)

int main()

在 c++ 中形參變數的改變,要影響實參,可以用指標或者引用解決

意義:指標實現單鏈表尾插 || 引用實現單鏈表尾插

指標引用

void slistpushback(sltnode*& phead, int x)

void testslist2()

有些書上喜歡這樣寫 (不推薦)

typedef int sltdatatype;

typedef struct slistnode

sltnode, *psltnode;

void slistpushback(psltnode& phead, int x)

2.1、傳值返回

//傳值返回

int add(int a, int b)

int main()

int main()

int main()

int main()

#include #includeusing namespace std;struct a ;a a;void testfunc1(a a) {}void testfunc2(a& a) {}a testfunc3() a& testfunc4() void testrefandvalue()void testreturnbyreforvalue()int main()#include

#include

using namespace std;

struct a ;

a a;

void testfunc1(a a) {}

void testfunc2(a& a) {}

a testfunc3()

a& testfunc4()

void testrefandvalue()

void testreturnbyreforvalue()

int main()

以值作為引數或者返回值型別,在傳參和返回期間,函式不會直接傳遞實參或者將變數本身直接返回,而是傳遞實參或者返回變www.cppcns.com量的乙份臨時的拷貝,因此用值作為引數或者返回值型別,效率是非常低下的,尤其是當引數或者返回值型別非常大時,效率就更低

引用就是乙個別名,沒有獨立空間,和其引用實體共用同一塊空間

指標變數是開闢一塊空間,儲存變數的位址

int main()

這裡我們對比一下 vs 下引用和指標的彙編**可以看出來他倆是同根同源

引用和指標的不同點:

1、引用在定義時必須初始化,指標沒有要求

2、引用在初始化時引用乙個實體後,就不能再引用其他實體,而指標可以在任何時候指向任何乙個同型別實體

3 、沒有 null 引用,但有 null 指標

4、在 sizeof 中含義不同:引用結果為引用型別的大小,與型別有關;但指標始終是位址空間所佔位元組個數 (32 位平台下佔 4 個位元組,64 位平台下佔 8 個位元組),與型別無關

5、引用自加即引用的實體增加 1,與型別無關,指標自加即指標向後偏移乙個型別的大小,與型別有關

6、有多級指標,但是沒有多級引用

7、訪問實體方式不同,指標需要解引用,引用編譯器自己處理

8、引用比指標使用起來相對更安全,指標容易出現野指標、空指標等非法訪問問題

本文標題: 帶你了解c++初階之引用

本文位址:

詳解C語言初階之陣列

目錄 所謂陣列 array 就是具有相同資料型別的集合,存放的資料型別即陣列本身的型別。可以發現儲存的都是int型 補充 除錯小技巧 除錯視窗 按f5進行除錯,開啟選單欄中的除錯 視窗 監視 隨便開啟乙個監視視窗,輸入arr,將程式執行過arr的初始化即可觀察到arr內部進行的初始化 a 完全初始化...

具體解釋C 引用 帶你走進引用的世界

一 介紹引用 首先說引用是什麼,大家能夠記住,引用就是乙個別名,比方小王有個綽號叫小狗。他的媽媽喊小狗回家吃飯。那就是在喊小王回家吃飯。接下來我們用兩行 來宣告乙個引用 就拿小王和小狗來說吧 int xiaow int xiaog xiaow 上面就是乙個引用,說明幾點要注意的地方 1.不是取位址符...

C語言初階之陣列詳細介紹

目錄 include int main int i 0 int sz sizeof arr sizeof arr 0 int n 0 scanf d n for i 0 i sz 1 i if n arr i 找到插入位置 break for int j sz 1 j i j arr j arr j...