最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談iOS開發(fā)中static變量的三大作用

 更新時(shí)間:2017年03月14日 10:23:34   投稿:jingxian  
下面小編就為大家?guī)硪黄獪\談iOS開發(fā)中static變量的三大作用。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

(1)先來介紹它的第一條也是最重要的一條:隱藏

當(dāng)我們同時(shí)編譯多個(gè)文件時(shí),所有未加static前綴的全局變量和函數(shù)都具有全局可見性。為理解這句話,我舉例來說明。我們要同時(shí)編譯兩個(gè)源文件,一個(gè)是a.c,另一個(gè)是main.c。

下面是a.c的內(nèi)容

char a = 'A'; // global variable

 void msg() 

 {

   printf("Hello\n"); 

 }

  

下面是main.c的內(nèi)容

int main(void)

 {  
   extern char a;  // extern variable must be declared before use

   printf("%c ", a);

   (void)msg();

   return 0;
 }

程序的運(yùn)行結(jié)果是:

A Hello

你可能會(huì)問:為什么在a.c中定義的全局變量a和函數(shù)msg能在main.c中使用?前面說過,所有未加static前綴的全局變量和函數(shù)都具有全局可見性,其它的源文件也能訪問。此例中,a是全局變量,msg是函數(shù),并且都沒有加static前綴,因此對(duì)于另外的源文件main.c是可見的。

如果加了static,就會(huì)對(duì)其它源文件隱藏。例如在a和msg的定義前加上static,main.c就看不到它們了。利用這一特性可以在不同的文件中定義同名函數(shù)和同名變量,而不必?fù)?dān)心命名沖突。Static可以用作函數(shù)和變量的前綴,對(duì)于函數(shù)來講,static的作用僅限于隱藏,而對(duì)于變量,static還有下面兩個(gè)作用。

(2)static的第二個(gè)作用是保持變量?jī)?nèi)容的持久。存儲(chǔ)在靜態(tài)數(shù)據(jù)區(qū)的變量會(huì)在程序剛開始運(yùn)行時(shí)就完成初始化,也是唯一的一次初始化。共有兩種變量存儲(chǔ)在靜態(tài)存儲(chǔ)區(qū):全局變量和static變量,只不過和全局變量比起來,static可以控制變量的可見范圍,說到底static還是用來隱藏的。

雖然這種用法不常見,但我還是舉一個(gè)例子。

#include <stdio.h>
 
int fun(void){

   static int count = 10;  // 事實(shí)上此賦值語(yǔ)句從來沒有執(zhí)行過

   return count--;
 }

int count = 1;

int main(void)

 {  

   printf("global\t\tlocal static\n");

   for(; count <= 10; ++count)

     printf("%d\t\t%d\n", count, fun());  

   return 0;

 }


程序的運(yùn)行結(jié)果是:

global     local static

1        10

2        9

3        8

4        7

5        6

6        5

7        4

8        3

9        2

10       1

(3)static的第三個(gè)作用是默認(rèn)初始化為0。其實(shí)全局變量也具備這一屬性,因?yàn)槿肿兞恳泊鎯?chǔ)在靜態(tài)數(shù)據(jù)區(qū)。在靜態(tài)數(shù)據(jù)區(qū),內(nèi)存中所有的字節(jié)默認(rèn)值都是0x00,某些時(shí)候這一特點(diǎn)可以減少程序員的工作量。比如初始化一個(gè)稀疏矩陣,我們可以一個(gè)一個(gè)地把所有元素都置0,然后把不是0的幾個(gè)元素賦值。如果定義成靜態(tài)的,就省去了一開始置0的操作。再比如要把一個(gè)字符數(shù)組當(dāng)字符串來用,但又覺得每次在字符數(shù)組末尾加'\0'太麻煩。如果把字符串定義成靜態(tài)的,就省去了這個(gè)麻煩,因?yàn)槟抢锉緛砭褪?\0'。不妨做個(gè)小實(shí)驗(yàn)驗(yàn)證一下。

#include <stdio.h>

int a;

int main(void)

 {
   int i;
   static char str[10];

  printf("integer: %d; string: (begin)%s(end)", a, str);

  return 0;
 }

程序的運(yùn)行結(jié)果如下

integer: 0; string: (begin)(end)

最后對(duì)static的三條作用做一句話總結(jié)。首先static的最主要功能是隱藏,其次因?yàn)閟tatic變量存放在靜態(tài)存儲(chǔ)區(qū),所以它具備持久性和默認(rèn)值0。

以上這篇淺談iOS開發(fā)中static變量的三大作用就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • iOS 將系統(tǒng)自帶的button改裝成上圖片下文字的樣子

    iOS 將系統(tǒng)自帶的button改裝成上圖片下文字的樣子

    這篇文章主要介紹了 iOS 將系統(tǒng)自帶的button改裝成上圖片下文字的樣子,代碼是通過繼承UIButton,然后再重寫layoutSubviews方法,對(duì)自帶的圖片和titleLabel進(jìn)行重新的layout。下面通過本文給大家分享下實(shí)現(xiàn)代碼
    2016-12-12
  • IOS MenuViewController實(shí)現(xiàn)彈出菜單效果

    IOS MenuViewController實(shí)現(xiàn)彈出菜單效果

    這篇文章主要介紹了IOS MenuViewController實(shí)現(xiàn)彈出菜單效果,實(shí)現(xiàn)一個(gè)從下移動(dòng)上來的彈出菜單,背景逐漸變深,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 支持Xcode10和適配iPhone XS Max、iPhone XR的方法

    支持Xcode10和適配iPhone XS Max、iPhone XR的方法

    這篇文章主要介紹了支持Xcode10和適配iPhone XS Max、iPhone XR的方法,文中通過示例代碼以及圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • IOS圖片設(shè)置毛玻璃效果

    IOS圖片設(shè)置毛玻璃效果

    這篇文章主要介紹了IOS圖片設(shè)置毛玻璃效果的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • iOS判斷是否越獄設(shè)備方法示例

    iOS判斷是否越獄設(shè)備方法示例

    這篇文章主要給大家介紹了關(guān)于iOS判斷是否越獄設(shè)備的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • iOS開發(fā)商品頁(yè)中banner中點(diǎn)擊查看圖片

    iOS開發(fā)商品頁(yè)中banner中點(diǎn)擊查看圖片

    本文文章給大家列出了關(guān)于iOS開發(fā)商品頁(yè)中banner中點(diǎn)擊查看圖片功能源碼,有興趣的朋友參考下吧。
    2018-02-02
  • iOS自定義UITableView實(shí)現(xiàn)不同系統(tǒng)下的左滑刪除功能詳解

    iOS自定義UITableView實(shí)現(xiàn)不同系統(tǒng)下的左滑刪除功能詳解

    關(guān)于左滑刪除這塊,相信不少朋友都遇到過。下面這篇文章主要給大家介紹了關(guān)于iOS如何自定義UITableView實(shí)現(xiàn)不同系統(tǒng)下的左滑刪除功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-09-09
  • iOS實(shí)現(xiàn)百度外賣頭像波浪的效果

    iOS實(shí)現(xiàn)百度外賣頭像波浪的效果

    對(duì)于現(xiàn)在很多人來說,叫外賣就成了不可或缺的習(xí)慣。某日瞬間發(fā)現(xiàn)百度外賣的APP波浪效果很是吸引人,相比較其他的外賣APP,顏值略高些.(淘寶也有波浪的效果),遂就思考如何實(shí)現(xiàn)這種"浪"的效果,下面來一起看看。
    2016-08-08
  • iOS實(shí)現(xiàn)點(diǎn)擊狀態(tài)欄自動(dòng)回到頂部效果詳解

    iOS實(shí)現(xiàn)點(diǎn)擊狀態(tài)欄自動(dòng)回到頂部效果詳解

    在IOS開發(fā)過程中,經(jīng)常會(huì)有這種需求,需要通過點(diǎn)擊狀態(tài)欄返回到頂部,給用戶更好的體驗(yàn)效果,下面這篇文章給大家詳細(xì)介紹了實(shí)現(xiàn)過程,有需要的可以參考借鑒。
    2016-09-09
  • IOS ObjectiveC中的賦值與對(duì)象拷貝

    IOS ObjectiveC中的賦值與對(duì)象拷貝

    這篇文章主要介紹了IOS ObjectiveC中的賦值與對(duì)象拷貝的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-09-09

最新評(píng)論

沅陵县| 海宁市| 龙海市| 邢台县| 卢氏县| 洛阳市| 瑞安市| 黎川县| 瓮安县| 卓资县| 芜湖县| 沭阳县| 光山县| 巴林右旗| 轮台县| 抚顺市| 二连浩特市| 漳平市| 龙南县| 五大连池市| 南昌县| 岳西县| 林州市| 青铜峡市| 西乌珠穆沁旗| 京山县| 昌图县| 民勤县| 深水埗区| 云梦县| 双城市| 广安市| 新野县| 丹阳市| 扶绥县| 屏东县| 寻甸| 台南县| 旬邑县| 赣州市| 东兰县|