1. 程式人生 > >基本型別引數傳值(持續整理中)

基本型別引數傳值(持續整理中)

一 、值傳遞
測試:
這裡寫圖片描述

分析:
值傳遞的過程中會給形參分配一個同等型別的記憶體空間,將實參的內容深拷貝到為該形參分配的記憶體空間中,後續都是對形參的這塊空間進行操作,對實參的記憶體空間沒有影響;

二 、引用傳值
測試:
這裡寫圖片描述

分析:
引用傳值,在函式中不用重新分配一個型別空間形參其實是實參所在的那個記憶體空間的別名(另外取得一個名字),對形參的操作也可以認為是對實參的操作;

三 、指標傳值
測試:
這裡寫圖片描述

分析:
指標傳值,會給形參分配一個形參型別的指標記憶體空間,這個指標記憶體空間裡儲存的是實參的記憶體地址,這個形參指向的是實參的那塊記憶體,因此可以利用形參索引到實參的記憶體對實參進行更改以及獲取實參的資料內容,但當形參儲存的地址變化後,將失去對實參的索引。

三種引數傳遞方式可以總結為:
這裡寫圖片描述

指標的三種傳遞方式也是類似的:
值傳遞:
這裡寫圖片描述

分配一塊指標空間,將實參中儲存的地址拷貝到分配的指標空間中,上述賦值是直接改變這塊指標空間儲存的地址,不會改變實參儲存的地址,因此函式執行完不會對名字進行更改。

引用傳遞:
這裡寫圖片描述

形參中的name和實參中的name共用同一塊記憶體,形參中name儲存的地址改變,相應的也就是實參中儲存的地址的改變。

指標傳遞:
這裡寫圖片描述

將實參name的地址賦值給形參的name,即形參name指向的記憶體塊就是實參name內容,因此給形參指向記憶體塊賦值就相當於改變實參name中的地址指向。