變量的作用域

1.局部變量

概念

局部變量就是定義在函數(shù), 代碼塊和函數(shù)形參列表中的變量, 我們就稱之為局部變量

作用范圍

從定義的那一行開始一直直到遇到大括號結束或者遇到return為止

特點:

相同作用域范圍內不能出現(xiàn)同名的局部變量
不同作用域范圍內出現(xiàn)同名的局部變量, 內部的局部變量會覆蓋外部的局部變量

注意:

局部變量沒有固定的初始化值, 如果沒有對局部變量進行初始化, 那么局部變量中是一些隨機的值, 所以在開發(fā)中千萬不要使用未初始化的局部變量

存儲位置:

局部變量存儲在棧中, 當作用域結束系統(tǒng)會自動釋放棧中的局部變量

2.全局變量

概念

寫在函數(shù),代碼塊,形參列表外的變量, 我們就稱之為全局變量
作用范圍: 從定義的那一行開始一直直到文件末尾(暫時這樣認為)

特點

全局變量和局部變量可以同名
如果存在和全局變量同名的局部變量, 那么局部變量會覆蓋全局變量

注意:

全局變量如果沒有進行初始化, 那么系統(tǒng)默認會將全局變量初始化為0

存儲位置:

全局變量存儲在靜態(tài)區(qū)中, 他會隨著程序的啟動而創(chuàng)建, 隨著程序的結束而結束

3.內部全局變量和外部全局變量

(1)全局變量分為兩種:

1)外部全局變量, 默認情況下所有的全局變量都是外部全局變量
什么是外部全局變量? 可以被其它文件訪問的全局變量我們稱之為外部全局變量
2)內部全局變量, 只要給全局變量加上static關鍵字就是內部全局變量
什么是內部全局變量? 只能被當前文件訪問的全局變量我們稱之為內部全局變量

(2) 外部全局變量有一個特點:

  可以定義同名的外部全局變量
  多個同名的外部全局變量指向同一塊存儲空間

內部全局變量有一個特點

  也可以定義多個同名的內部全局變量
  多個同名的全局變量如果不在同一個文件中, 那么指向不同的存儲空間

(3)static

為了提高數(shù)據(jù)的安全性, 不讓別人在其它文件中修改我們的全局變量,
 C語言提供了另外一個用于修改全局變量的關鍵字, static

 只要用static修改的全局變量就是內部全局變量, 只能在當前文件中使用
 這樣就可以提高我們全局變量的安全性
 
 如果多個文件中存在同名的內部全局變量, 相互不會影響
 如果既有外部全局變量也有內部全局變量, 那么會優(yōu)先訪問內部全局變量
 
 extern:
    用于聲明一個外部全局變量
    聲明只需要在使用變量之前聲明就可以了
 static:
    用于定義一個內部全局變量

(4)聲明和定義的區(qū)別:

聲明不會開辟存儲空間
定義會開辟存儲空間

4.static對局部變量的作用

(1)當使用static來修飾局部變量, 那么會延長局部變量的生命周期, 并且會更改局部變量存儲的位置 , 將局部變量從棧轉移到靜態(tài)區(qū)中
(2)只要使用static修改局部變量之后, 當執(zhí)行到定義局部變量的代碼就會分配存儲空間, 但是只有程序結束才會釋放該存儲空間,靜態(tài)區(qū)地址賦值后不能更改。

5.extern和static對函數(shù)的作用

(1)函數(shù)也分為內部函數(shù)和外部函數(shù)

     默認情況下所有的函數(shù)都是外部函數(shù)
     什么是外部函數(shù)? 可以被其它文件訪問的函數(shù)稱之為外部函數(shù)
     什么是內部函數(shù)? 只能在當前文件中訪問的函數(shù)稱之為內部函數(shù)

(2) 只要在函數(shù)的返回值前面加上一個extern就可以讓函數(shù)變?yōu)橐粋€外部函數(shù), 由于默認就是外部函數(shù), 所以在開發(fā)中一般情況extern沒人寫

      如果extern寫在函數(shù)的實現(xiàn)中, 代表定義一個外部函數(shù)
      如果extern寫在函數(shù)的聲明中, 代表聲明一個外部函數(shù)

(3) 只要在函數(shù)的返回值前面加上static就可以讓函數(shù)變?yōu)閮炔亢瘮?shù), 其它文件就不能訪問了

     如果static寫在函數(shù)的實現(xiàn)中, 代表定義一個內部函數(shù)
     如果static寫在函數(shù)的聲明中, 代表聲明一個內部函數(shù)

5.const的用法

(1) const在指針中的用法

 如果const寫在指針類型的左邊, 那么意味著指向的內存空間中的值不能改變, 但是指針的指向可以改變
 如果const寫在指針的數(shù)據(jù)類型和*號之間, 那么意味著指向的內存空間中的值不能改變, 但是指針的指向可以改變
 如果const寫在指針的右邊(數(shù)據(jù)類型 * const), 那么意味著指針的指向不可以改變, 但是指針指向的存儲空間中的值可以改變
const char *name = "lnj";
int const *p = #
int * const p = #

(2) const對基本數(shù)據(jù)類型的作用

 const對基本數(shù)據(jù)類型的作用, 可以讓基本數(shù)據(jù)類型的變量變?yōu)槌A? const有兩種寫法, 1.寫在數(shù)據(jù)類型的左邊, 2.寫在數(shù)據(jù)類型的右邊

 const int num = 10;
 int const num = 10;  

6.成員變量膘魄、全局變量和局部變量對比

(1)寫在類聲明的大括號中的變量, 我們稱之為 成員變量(屬性, 實例變量)

   成員變量只能通過對象來訪問
   注意: 成員變量不能離開類, 離開類之后就不是成員變量 
            成員變量不能在定義的同時進行初始化
   存儲: 堆(當前對象對應的堆的存儲空間中)
   存儲在堆中的數(shù)據(jù), 不會被自動釋放, 只能程序員手動釋放,或者等對象釋放的時候乌逐,它也會釋放

(2)寫在函數(shù)和大括號外部的變量, 我們稱之為全局變量

   作用域: 從定義的那一行開始, 一直到文件末尾
   局部變量可以先定義在初始化, 也可以定義的同時初始化
   存儲: 靜態(tài)區(qū)
   程序一啟動就會分配存儲空間, 直到程序結束才會釋放

(3)寫在函數(shù)或者代碼塊中的變量, 我們稱之為局部變量

       作用域: 從定義的那一行開始, 一直到遇到大括號或者return
       局部變量可以先定義再初始化, 也可以定義的同時初始化
       存儲 : 棧
       存儲在棧中的數(shù)據(jù)有一個特點, 系統(tǒng)會自動給我們釋放

7.iOS中全局變量的幾種使用方法

(1)在AppDelegate中聲明并初始話全局變量
在需要使用的地方插入以下代碼,在ios中 AppDelegate被設計成了單例模式

AppDelegate *appDelegate = [[UIApplication shareApplication] delegate];  
appDelegae.your_var  

(2)使用extern關鍵字创葡,extern可以理解為外部引入的意思

1浙踢、單獨新建一個example.h文件,文件名自己取灿渴,用于存放所有的全局變量
2洛波、在該文件中寫入你要定義的變量名胰舆,定義時不能初始化,如:
NSString *str;
int number;
3蹬挤、在需要使用的地方引入頭文件
#import "example.h"
4缚窿、給全局變量初始化或者賦值
extern NSString *str = [[NSString alloc] initWithFormat:@"abcd"];
extern int number = 1;

(3)使用單例

interface Singleton : NSObject  

  
+ (Singleton *)sharedSingleton;  
@property (nonatomic,copy) NSString *testGlobal; 
  
  
@end  
  
@implementation Singleton  

  
  
+ (Singleton *)sharedSingleton  
{  
  static Singleton *sharedSingleton;  
  
  @synchronized(self)  
  {  
    if (!sharedSingleton)  
      sharedSingleton = [[Singleton alloc] init];  
  
    return sharedSingleton;  
  }  
}  
  
@end  

使用如:
[Singleton sharedSingleton].testGlobal = @"test";

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市焰扳,隨后出現(xiàn)的幾起案子倦零,更是在濱河造成了極大的恐慌,老刑警劉巖吨悍,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扫茅,死亡現(xiàn)場離奇詭異,居然都是意外死亡畜份,警方通過查閱死者的電腦和手機诞帐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來爆雹,“玉大人停蕉,你說我怎么就攤上這事「铺” “怎么了慧起?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長册倒。 經(jīng)常有香客問我蚓挤,道長,這世上最難降的妖魔是什么驻子? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任灿意,我火速辦了婚禮,結果婚禮上崇呵,老公的妹妹穿的比我還像新娘缤剧。我一直安慰自己,他們只是感情好域慷,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布荒辕。 她就那樣靜靜地躺著,像睡著了一般犹褒。 火紅的嫁衣襯著肌膚如雪抵窒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天叠骑,我揣著相機與錄音李皇,去河邊找鬼。 笑死座云,一個胖子當著我的面吹牛疙赠,可吹牛的內容都是我干的付材。 我是一名探鬼主播朦拖,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼圃阳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了璧帝?” 一聲冷哼從身側響起捍岳,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎睬隶,沒想到半個月后锣夹,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡苏潜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年银萍,在試婚紗的時候發(fā)現(xiàn)自己被綠了抓于。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片觉既。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖栋艳,靈堂內的尸體忽然破棺而出飞袋,到底是詐尸還是另有隱情戳气,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布巧鸭,位于F島的核電站瓶您,受9級特大地震影響,放射性物質發(fā)生泄漏纲仍。R本人自食惡果不足惜呀袱,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望郑叠。 院中可真熱鬧夜赵,春花似錦、人聲如沸锻拘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽署拟。三九已至婉宰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間推穷,已是汗流浹背心包。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留馒铃,地道東北人蟹腾。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓痕惋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親娃殖。 傳聞我的和親對象是個殘疾皇子值戳,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內容

  • Javascript 這門語言與其他的大部分語言相比,有很多特殊性炉爆,這是很多人喜歡它或者討厭它的原因堕虹。其中變量的作...
    范斌閱讀 1,210評論 0 51
  • 變量的定義:變量就是計算機的內存單元郁稍; 變量的名稱定義:變量的名稱就是計算機內存單元的名稱 | 指針赦政,也可以理解為...
    彭曉華閱讀 394評論 0 1
  • 變量的作用域指的是,變量起作用的范圍耀怜。也就是能訪問到變量的有效范圍恢着。JavaScript的變量依據(jù)作用域的范圍可以...
    壬萬er閱讀 293評論 0 1
  • 所謂刻磚劉然评、泥人張、風箏魏狈究、機器王碗淌、刷子李等,時間久了這些姓和拿手行當連在一起稱呼的牛人抖锥,他們的名字沒人知道亿眠,就一...
    夢回匠人閱讀 651評論 2 5
  • 小說和技術類書籍:53本 讀書還可以。補全了誅仙系列磅废。漫畫:火影忍者 死神 完結補全了進擊的巨人纳像、獵人、七龍珠拯勉、棒...
    惟有進步值得信仰閱讀 265評論 0 0