引用型別傳值(一道極難有人完全做對的面試題)

2021-05-22 03:08:46 字數 597 閱讀 4181

最近碰到乙個 陣列傳值和引用傳值的問題,剛開始自己還弄錯了,突然想起很久以前一道類似的面試題

class

value

class

program

public

void

first()

public

void

second(

refvalue v, 

inti)

public

void

second(value v, 

inti)}

執行結果:

36036

736016

7

初步解答:

所有的方法引數,如果不指定ref或者out,那就是按副本傳遞的。引用型傳遞的是位址的副本,值型別傳遞的是值的副本。

在value val = new value(); v = val; 之前,second方法內和方法外都是指向同乙個物件,所以改變對方法外有效。

在執行value val = new value(); v = val;之後,second方法內的v指向了乙個新的物件,並不影響方法外的引用,所以之後的改變對方法外無效

關於華為的一道筆試題(傳值和傳引用)

include include void getmemory char p int main 這個程式的問題 程式崩潰,getmemory中的malloc 不能返回動態記憶體,free 對str操作很危險 可以更改為下面的程式 include include void getmemory char ...

值型別和引用型別的傳參問題

關於值型別和引用型別已經寫了兩篇部落格,之前大多都是理論階段,今兒就舉個栗子來看看他們兩種資料型別在傳遞引數方面到底有什麼不同的地方。今天的開場白還真的挺開門見山的哈 首先建立乙個person的類,有姓名 年齡 樣貌三個屬性 public class person public int age pu...

一道static型別筆試題

includeint fun int tmp static int loop 20 static int count 5 int tmain int argc,tchar argv return 0 程式輸出結果 當時看完程式我給出的答案 local static 那一列全是29,而global那一...