C ref,out關鍵字的作用

2022-02-12 18:53:36 字數 847 閱讀 2336

ref是傳遞引數的位址,out是返回值,兩者有一定的相同之處,不過也有不同點。

使用ref前必須對變數賦值,out不用

out的函式會清空變數,即使變數已經賦值也不行,退出函式時所有out引用的變數都要賦值,ref引用的可以修改,也可以不修改。

區別可以參看下面的**:

static

void outtest(out

int x, out

inty)

static

void reftest(ref

int x, ref

inty)

public

static

void

main()

;b=", a, b);

int c = 11, d = 22

; outtest(

out c, out

d); console.writeline(

"c=;d=

", c, d);

//ref test

intm, n;

//reftest(ref m, ref n);

//上面這行會出錯,ref使用前,變數必須賦值

int o = 11, p = 22

; reftest(

ref o, ref

p); console.writeline(

"o=;p=

", o, p);

}

關鍵字 volatile關鍵字的作用

1.volatile關鍵字是防止在共享的空間發生讀取的錯誤。只保證其可見性,不保證原子性 使用volatile指每次從記憶體中讀取資料,而不是從編譯器優化後的快取中讀取資料,簡單來講就是防止編譯器優化。2.在單任務環境中,如果在兩次讀取變數之間不改變變數的值,編譯器就會發生優化,會將ram中的值賦值...

C static關鍵字作用

1.static修飾全域性變數 當同時編譯多個檔案時,所有未加static字首的全域性變數和函式都具有全域性可見性,其它的原始檔也能訪問。未加static的全域性變數,在符號表中是global符號,其他目標檔案可見,這樣的符號是要參與符號解析的。加了static之後,是local符號,其他目標檔案不...

C static 關鍵字作用

在全域性變數前加上static關鍵字,全域性變數就定義成了乙個全域性靜態變數。在區域性靜態變數之前加上static,區域性變數就成為乙個區域性靜態變數。在函式返回型別前加static,函式就定義為靜態函式。在類中,靜態成員可以實現多個物件之間的資料共享,並且使用靜態資料成員還不會破壞隱藏的原則,即保...