static 和extern的區別
extern
- extern置於變數或者函式前,作用域是整個工程,表示變數或者函式的定義在別的檔案中,通過在變數前新增extern來訪問這個全域性變數,
- extern修飾的變數沒有真正的記憶體
#import "Person.h"
@implementation Person
int age = 10;
@end
在main.m檔案中,不需要引入Person類的標頭檔案
int main(int argc, char * argv[]) {
@autoreleasepool {
extern int age; // 只要你在全域性變數前加extern,你的這個檔案就可以訪問這個全域性變數
NSLog(@"age1=%d",age); // age1 = 10
age = 20; // 通過這種方法修改age值
NSLog(@"age2=%d",age); // age2 = 20
}
return 0;
}
static
- 只要在全域性變數前加static,那麼這個全域性變數的作用域就會縮小到當前檔案,外界就不能訪問了。
#import "Person.h"
@implementation Person
static int grade = 10;
@end
在main.m檔案中,不引入Person類的標頭檔案
int main(int argc, char * argv[]) {
@autoreleasepool {
extern int grade;
NSLog(@"grade=%d",grade);
}
return 0;
}
編譯器直接報錯,
- static讓區域性變數只初始化一次,不改變區域性變數的作用域,僅僅改變了區域性變數的生命週期(只到程式結束,這個區域性變數才會銷燬)
相關文章
- extern int a 和int a的區別
- extern、 const、static的理解
- self::class和static::class的區別
- const、define 和 static 的區別
- const,static,extern簡介
- C中的auto、static、register、extern、const和volitate
- PHP new self()和new static()的區別PHP
- JAVA 裡static 和volatile的區別Java
- iOS之const,static,extern使用iOS
- 巨集,static、const 、extern簡介
- PHP 中 bind 的用法 self 和 static 的區別PHP
- iOS中的static const extern關鍵字iOS
- Java中static、final、static final的區別Java
- ViewState Session Static區別ViewSession
- const與static的區別
- reinterpret_cast 和 static_cast 的區別AST
- 簡單易懂 —— this、self、static 的區別
- final修飾和static final修飾的區別
- HTML之position:absolute relative static fixed的區別和理解HTML
- iOS常用關鍵字static、const、extern、defineiOS
- vue-cli 自定義路徑別名 assets和static資料夾的區別 --save-dev和--save的區別Vuedev
- iOS 靜變數static、全域性變數extern、區域性變數、例項變數iOS變數
- PHP static 關鍵字和 self 關鍵字例項化的區別PHP
- static_cast和dynamic_cast的區別,看完這篇你就懂了!AST
- Java中final與static final的區別Java
- Vue中的靜態資源管理(src下的assets和static資料夾的區別)Vue
- final與static關鍵字的區別?(skycto JEEditor)
- php class中public,private,protected,static的區別,以及例項PHP
- PHP中new static()與new self()的區別異同分析PHP
- ../和./和/的區別
- 和 的區別
- as 和 with的區別
- ||和??的區別
- /*和/**的區別
- C++關鍵字(static/register/atuo/extern/volatile/const)釋疑 (轉)C++
- LinkedList和ArrayList的區別、Vector和ArrayList的區別
- http和https的區別/get和post的區別HTTP
- ./ 和sh 的區別