值 引用 指標概念區別彙總

2021-09-06 06:25:05 字數 1217 閱讀 9190

傳值和傳引用的概念

傳值(pass by value):即形參接收實參傳遞過來的值,如果是自定義型別,要呼叫拷貝建構函式。函式處理的是形參的值。

傳引用(pass by reference):引用表示與原物件完全相同,是同乙個物件。若函式的形參是引用,則實參與形參間不存在引數傳遞,且函式內對形參的修改就是修改實參,因為它們是引用關係,是同乙個物件。

語言應用

三種語言的處理方法相同: 不管傳遞的是普通變數還是指標,都是傳值。對於指標,看函式修改的是指標的值,還是指標所指物件的值就可以了。

引用和指標主要區別

(1)引用被建立的同時必須被初始化,指標則可以在任何時候被初始化。  

(2)不能有null引用,引用必須與合法的儲存單元關聯,指標則可以是null)。  

(3)一旦引用被初始化,就不能改變引用的關係,指標則可以隨時改變所指的物件。 

函式引數傳遞機制的基本理論

函式引數傳遞機制問題在本質上是呼叫函式(過程)和被呼叫函式(過程)在呼叫發生時進行通訊的方法問題。基本的引數傳遞機制有兩種:值傳遞和引用傳遞。以下討論稱呼叫其他函式的函式為主調函式,被呼叫的函式為被調函式。

值傳遞(passl-by-value)過程中,被調函式的形式引數作為被調函式的區域性變數處理,即在堆疊中開闢了記憶體空間以存放由主調函式放進來的實參的值,從而成為了實參的乙個副本。值傳遞的特點是被調函式對形式引數的任何操作都是作為區域性變數進行,不會影響主調函式的實參變數的值。

引用傳遞(pass-by-reference)過程中,被調函式的形式引數雖然也作為區域性變數在堆疊中開闢了記憶體空間,但是這時存放的是由主調函式放進來的實參變數的地址。被調函式對形參的任何操作都被處理成間接定址,即通過堆疊中存放的位址訪問主調函式中的實參變數。正因為如此,被調函式對形參做的任何操作都影響了主調函式中的

實參變數。

小結 1、 c++中傳值(特別是對於自定義型別),會帶來拷貝建構函式執行的開銷,所以執行效率低一點。

傳引用和傳指標,不執行拷貝建構函式,效率會高

2、當用按值傳遞方式傳遞或返回乙個物件時,編譯器會自動呼叫拷貝建構函式!

3、當指標作為形參時,最好畫出指標所指向的物件。然後分析修改的是指標的值,還是指標所指的物件。

指標引用和引用指標的區別

c 在傳參的過程中,指標 和指標引用 是有區別的。雖然,我們往往可以通過傳指標然後通過間址訪問來修改指標所指向物件的值,同樣,通過引用也可以直接修改物件的值。但是,當傳指標的時候有乙個問題,就是,我們雖然可以通過指標來修改指標所指向物件的值,但是我們沒有不能直接修改指標的內容 也就是指標變數存放的位...

值傳遞,指標傳遞,引用傳遞 的區別

值傳遞,指標傳遞,引用傳遞 的區別 值傳遞 從被呼叫函式的角度來說,值傳遞是單向的 實參 形參 引數的值只能傳入,不能傳出 形參為實參的拷貝,形參有單獨的記憶體空間,當函式內部需要修改引數,並且不希望這個改變影響呼叫者時,採用值傳遞 指標傳遞 指標傳遞向形參傳遞的為實參的位址,即形參為乙個指向實參位...

值傳遞 指標傳遞 引用傳遞的區別

1.值傳遞 形參是實參的拷貝,改變形參的值並不會影響外部實參的值。從被呼叫函式的角度來說,值傳遞是單向的 實參 形參 引數的值只能傳入,不能傳出。當函式內部需要修改引數,並且不希望這個改變影響呼叫者時,採用值傳遞。1 void swap int a,intb 2 910intmain 用gdb除錯後...