常見的全域性變數定義

2021-07-16 10:42:45 字數 1527 閱讀 2246

// test.m

static

nsstring

*const

ktestkey

=@"test_key"

;// 只作用於當前test.m檔案

// test.h

extern

nsstring

*const

ktestkey

;// test.m

nsstring

*const

ktestkey

=@"test_key"

;// 作用於整個工程,在需要用到該變數的地方包含test.h標頭檔案即可

上面兩種寫法是等效的因為 nsinteger const 等價於 const nsinteger。

同樣,上面第一種和第二種寫法是等效的,專案中如果出現前兩種寫法,大多都不是符合預期的寫法,因為str的值依然可以改變。

第三種寫法才符合要使用的const的預期,這時候不允許再給str賦值。因為 nsstring const * 表示指向 nsstring const 的指標,nsstring *const 表示指向 nsstring 的const指標。

指標被宣告為const後,將不允許被重新賦值,否則會編譯錯誤。

static除了宣告變數為靜態變數外,還有乙個作用,就是宣告作用域在檔案內的全域性變數。

下面**宣告ktestkey為作用域在當前檔案的全域性變數:

如果不加static,則表示ktestkey為作用域在整個工程的全域性變數。假如工程中其它地方也定義了相同的ktestkey全域性變數,就會出現變數重複定義編譯失敗問題。

如果在test.m檔案中定義了如下全域性變數:

那麼就應該在test.h檔案中進行如下宣告,表示該全域性變數已經被定義過了:

如果工程其它位置需要用到ktestkey全域性變數,則在.m檔案中包含test.h檔案即可(也可以不包含test.h,直接在.m檔案中extern宣告就可以使用,但是這樣不便於管理)。

const放在型別兩邊是等價的,所以:

下面是一段測試**:

// const int *a

intb=1

;const

int*a=

&b;intc=

2;a=

&c;*

a=3;

// 編譯失敗,因為a是指向const int的指標

// int *const a

intb=1

;int

*consta=

&b;intc=

2;a=

&c;// 編譯失敗,因為a是指向int的const指標*a

=3;// const int *const a

intb=1

;const

int*

consta;

intc=2

;a=&

c;// 編譯失敗,因為a是指向const int的const指標*a

=3;// 編譯失敗,因為a是指向const int的const指標

定義全域性變數

inte ce property strong,nonatomic uiwindow window propertyboolislogin end synthesize window window synthesizeislogin end 那麼在其他的class裡,則可以通過下列 呼叫全域性變數 ...

PHP變數定義及常見預定義全域性變數

總結本文就介紹了關於變數的基礎內容。name1 php name2 name1 name2引用了name1 name2 this is name2 改變name2的值,同時會改變name1的值。echo name2.輸出 this is php echo name1 輸出 this is php p...

vue定義全域性變數

在開發中,有時需要將從介面請求到的一些資料當做全域性變數,在其他頁面多次使用。比如,登入成功後可能需要將使用者名稱,id等資訊存起來,便於其他頁面展示或使用,將這些資訊定義為全域性變數是用起來就很方便。舉栗子 在login.vue中拿到了使用者的一些資訊 import vue from vue 注意...