c 指標與引用的總結

2021-09-09 07:43:53 字數 2183 閱讀 6338

指標是引用嗎????

在回答這個問題之前先來看看什麼是引用☟☟☟

引用不是定義乙個新的變數,而是給乙個已經定義的變數重新起乙個別名。

引用需要注意的特點:

根據輸出結果我們發現b和a指向同一塊兒空間,b能修改a的值,也就是我們上面所說的別名

引用被const修飾時

我們發現:

常量只能轉為常量,不能轉為變數,且常量不能被修改

變數可以轉為常量,當變數改變時,常量引用也隨之改變

引用的各種型別相互轉換

我們發現:

引用作引數

這是因為函式呼叫引數壓棧過程中,形參將在棧上做臨時拷貝,當函式呼叫結束,釋放棧幀,形參也隨之釋放,就算在函式中修改了形參的值,也對實參沒有影響!

所以我們在學習指標時是這樣傳參的:

我們用指標的指向去修改我們要修改的內容!

而今天我們用引用:

我們發現a和b也交換了,但是卻比指標簡單的多!而且我們發現因為形參是實參的別名,我們不需要開闢臨時空間儲存臨時變數,減少了拷貝物件,相當於通過自身交換實現。

總結:

引用作返回值

c==7???我們來看函式棧幀:

我們發現在ret返回時add()的函式棧幀將釋放,而ret是區域性變數,將隨著棧幀的銷毀而銷毀,我們的引用c任然指向ret釋放的那塊兒空間,那塊兒空間隨時都會被申請占用,所以我們的「c=7」是偶然啦~

總結:不要返回乙個臨時變數的引用

如果返回物件出了當前函式的作用域依然存在,則最好使用引用返回,這樣更高效

大總結

回到我們最開始,指標是引用嗎?顯然不是。

C 的指標與引用

指標是乙個變數,其值為另乙個變數的位址,即,記憶體位置的直接位址。include using namespace std int main void 可以利用指標p 來依次訪問儲存位置相鄰的陣列的值 include using namespace std int main void int p p ...

C 指標與引用

include 引用傳遞 int add1 int x,int y 指標傳遞 int add2 int x,int y 值傳遞 int add3 int x,int y void main int a 1 int b a 引用,表示b的引用指向了a 定義引用 開頭 必須賦初值 引用變數不占用記憶體 ...

C 指標與引用

從函式引數傳遞說起 int addition int x,int y int main void duplicate int a,int b int main 按值傳遞,顧名思義,函式形參僅僅得到變數傳來的值,函式的任何操作並不對變數產生任何變化 按位址傳遞,他的定義方式與按值傳遞不一樣 注意其在m...