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和static使用
- const、define 和 static 的區別
- self::class和static::class的區別
- PHP new self()和new static()的區別PHP
- reinterpret_cast 和 static_cast 的區別AST
- const與static的區別
- PHP 中 bind 的用法 self 和 static 的區別PHP
- final修飾和static final修飾的區別
- iOS常用關鍵字static、const、extern、defineiOS
- 簡單易懂 —— this、self、static 的區別
- PHP static 關鍵字和 self 關鍵字例項化的區別PHP
- static_cast和dynamic_cast的區別,看完這篇你就懂了!AST
- final與static關鍵字的區別?(skycto JEEditor)
- Vue中的靜態資源管理(src下的assets和static資料夾的區別)Vue
- php class中public,private,protected,static的區別,以及例項PHP
- ../和./和/的區別
- LinkedList和ArrayList的區別、Vector和ArrayList的區別
- http和https的區別/get和post的區別HTTP
- ||和??的區別
- /*和/**的區別
- Flutter 知識梳理 (Dart) - Dart 中 static, final, const 區別FlutterDart
- extern "c"的用法
- jquery $(this) 和this的區別jQuery
- JQuery this和$(this)的區別jQuery
- T和?的區別
- makefile =和:=的區別
- ++a和a++的區別
- ./ 和sh 的區別
- extern "C"的用法解析
- 和區別
- springmvc和springboot的區別SpringMVCSpring Boot
- SDK和API的區別?API
- ArrayList和LinkedList的區別?
- button和submit的區別MIT
- MTV和MVC的區別MVC
- hadoop和spark的區別HadoopSpark
- rpop 和 brpop的區別
- WebApi和MVC的區別WebAPIMVC