C 學習筆記(基礎知識回顧)之值傳遞和引用傳遞

2022-07-17 05:18:10 字數 1852 閱讀 6003

c#學習筆記(基礎知識回顧)之值型別和引用型別

2.1在變數通過引用傳遞給方法時,被呼叫的方法得到的就是這個變數,更準確的說,是指向記憶體中變數的指標。所以方法內部對變數進行的任何改變在方法退出後仍然有效。而如果變數通過值傳遞給方法,被呼叫的方法得到的是變數的乙個相同副本,也就是說方法退出後,對變數進行的修改會丟失。

2.2值型別的值傳遞:值型別的變數包含的是實際資料,作為引數傳遞的是資料本身的副本。如下,int型別通過值傳遞給方法,對應方法對該值所做的任何改變都沒有改變原先int物件的值。

2.3通過引用傳遞值型別:傳遞的不是值型別的值,而是對值型別的引用,如下,引數i不是int型別,而是對num的引用,方法內部i加一時,實際是i所引用的項num。所以i加一也就修改了num的值。(個人理解是:addone(ref num)相當於傳遞了num的指標104524728,而addone方法中對i的操作,相當於操作指標所指向的值,即num的值)。

2.4:通過值傳遞引用型別。引用型別的變數不直接包含其資料,他包含的是對資料的引用。通過值傳遞引用型別的引數時,會改變該引用所指向的資料值,但是無法改變引用本身的值。示例**如下:

2.4.1:下面的示例演示通過值向 addone方法傳遞引用型別的引數 str。由於該引數是對 str的引用,所以addone方法內的操作會更改str的值。

2.4.2通過值傳遞引用型別時,試圖將引數重新分配到不同的記憶體位置時,該操作僅在方法內有效,並不影響原始變數。如下**:

c#學習筆記(基礎知識回顧)之值型別與引用型別轉換(裝箱和拆箱)

C 學習筆記(基礎知識回顧)之值型別和引用型別

一 c 把資料型別分為值型別和引用型別 1.1 從概念上來看,其區別是值型別直接儲存值,而引用型別儲存對值的引用。1.2 這兩種型別在記憶體的不同地方,值型別儲存在堆疊中,而引用型別儲存在託管對上。儲存位置的不同會有不同的影響。例如int型別是值型別 int x,y x 10 y x y 20 前三...

c 基礎知識回顧

1.資料型別和類。所有程式設計都是處理輸入和輸出。關於輸入引數,從右至左把引數入棧,這樣根據棧基址,可以定位第乙個引數。因為很多函式是引數數量不定的,比如printf.關於輸出,記得輸出時,一般是把值放入eax 暫存器,所以一般資料型別,直接放入返回值資料,暫存器可以裝下,而返回物件,會返回物件的指...

C語言基礎知識回顧

逗號運算 scanf和printf輸入 輸出 迴圈 switch break和continue的區別 主函式是乙個程式的入口,整個程式開始執行的位置,乙個程式中最多只能有乙個主函式,也可以沒有。int main void 運算子 含義語法 返回值 與a b ab都真,則真 其他為假 或 a b ab...