指標是引用嗎????
在回答這個問題之前先來看看什麼是引用☟☟☟
引用不是定義乙個新的變數,而是給乙個已經定義的變數重新起乙個別名。
引用需要注意的特點:
根據輸出結果我們發現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...