C語言中的static和extern關鍵字

2021-03-02 華清遠見

因為在app開發中,定義網絡連結或者設定常用變量時經常會用到一些C中的關鍵字,但很多同學只見其名而不知其意,今天就介紹2個開發中常用的C語言關鍵字。

1.staticstatic的作用

修飾局部變量:
1.延長局部變量的生命周期,程序結束才會銷毀
2.局部變量只會生成一份內存,只會初始化一次
3.改變局部變量的作用域

寫法:

//方法內部static修飾的變量
//不管調用與否,只會調用一次- (void)staticTest{ // static修飾局部變量 static int age = 0; age++; NSLog(@"%d",age);}//即調用兩次該方法//列印結果//1//2

修飾全局變量
1.只能在本文件中訪問,修改全局變量的作用域,生命周期不會改
2.避免重複定義全局變量

寫法:

// 全局變量:只有一份內存,
//所有文件共享,與extern聯合使用。// 寫在方法外部// static修飾全局變量static int age = 20;//調用extern int age;NSLog(@"%d",age);//列印結果//20

2.externextern作用:extern工作原理:

戳閱讀原文:現在報名就送500萬紅包,來華清助你成就高薪夢!

點住二維碼3秒

與10萬程序高手做朋友

每天乾貨餵飽你

(記得識別二維碼喲)

 

或微信搜索華清遠見,即可關注我們

免費講座 | 乾貨分享 | 程式設計師生活 | 就業招聘

高端IT就業培訓專家

m.embedu.org

相關焦點

  • static和extern對函數的作用
    C語言規定不同的源文件可以有同名的內部函數,並且互不幹擾。接下來就演示在一個源文件中調用另外一個源文件定義的函數,比如在main.c中調用one.c中定義的one函數。1.首先在one.c中定義了一個one函數如果你想讓這個one函數可以被main.c訪問,那麼one函數就必須是外部函數。完整的定義是要加上extern關鍵字。不過這個extern跟auto關鍵字一樣廢,完全可以省略,因為默認情況下,所有的函數就是外部函數。
  • 理解 C 語言中的關鍵字 extern
    我確定這篇文章對c語言的初學者會有很大的幫助,因為這將使他們更好更熟練的使用c語言。所以就讓我先來說說extern關鍵字在變量和函數上的應用。
  • C語言中的變量存儲類型static老手都這樣用
    static老手都這樣用。1、 先來回顧C語言變量C語言中變量值的存儲位置有兩類:CPU的寄存器和內存。變量存儲類型關係到其存儲位置,除了register型存儲在CPU寄存器中,C語言提供的其它三種存儲類型(auto型、static型、extern型)的變量均存儲在內存中。存儲位置不同,決定了變量的生存期和作用域。具體變量介紹請見作者的另一篇文章,名為《說一說C語言中的變量存儲類型——「extern」》。
  • 說一說C語言中的變量存儲類型——「extern」
    1、 回顧C語言變量C語言中變量值的存儲位置有兩類:CPU的寄存器和內存。變量存儲類型關係到其存儲位置,除了register型存儲在CPU寄存器中,C語言提供的其它三種存儲類型(auto型、static型、extern型)的變量均存儲在內存中。
  • C語言應用筆記(二):C語言static關鍵字及其使用
    前言:在C語言中,static的字面意思容易給我們帶來些許誤解,在開發過程中,我們經常會需要定義一些static類型的變量和函數,
  • C語言中auto register static const volatile 區別
    1)auto這個關鍵字用於聲明變量的生存期為自動,即將不在任何類、結構、枚舉、聯合和函數中定義的變量視為全局變量,而在函數中定義的變量視為局部變量。這個關鍵字不怎麼多寫,因為所有的變量默認就是auto的。
  • C++中inline, extern, static潛在的陷阱
    相信inline, extern, static這三個關鍵字對於C++程式設計師是非常熟悉的,但有些時候,其中隱藏的陷阱,可能會給你的程序帶來一些很難診斷的問題。1. inline我們先聚焦於inline函數(內聯函數)。inline可以與名稱空間一起使用,但這種用法並不常見。
  • C語言中static的常見作用
    1.全局靜態變量在全局變量之前加上關鍵字static,全局變量就被定義成為一個全局靜態變量。當static用來修飾全局變量的時候,它就改變了全局變量的作用域(在聲明他的文件之外是不可見的),但是沒有改變它的存放位置,還是在靜態存儲區中。3. 靜態函數在函數的返回類型前加上關鍵字static,函數就被定義成為靜態函數。
  • C++中的static關鍵字的總結
    最近在備C++的課程,所以把在備課過程中遇到的問題進行了總結和梳理,先把C++中的static關鍵字的用法做以下總結。C++的static有兩種用法:面向過程程序設計中的static和面向對象程序設計中的static。前者應用於普通變量和函數,不涉及類;後者主要說明static在類中的作用。
  • 【編程基礎】extern "C"的用法解析
    3.深層揭密extern "C"  extern "C" 包含雙重含義,從字面上即可得到:首先,被它修飾的目標是「extern」的;其次,被它修飾的目標是「C」的。讓我們來詳細解讀這兩重含義。  被extern "C"限定的函數或變量是extern類型的;  extern是C/C++語言中表明函數和全局變量作用範圍(可見性)的關鍵字,該關鍵字告訴編譯器,其聲明的函數和變量可以在本模塊或其它模塊中使用。記住,下列語句:  extern int a;  僅僅是一個變量的聲明,其並不是在定義變量a,並未為a分配內存空間。
  • 單片機C語言中 static 用法小結
    ;少量的液晶字庫等也放在這裡;只讀,防止程序由於意外事故而修改自身指令;2)初始化數據段(數據段)——在程序中所有賦了初值的全局變量,存放在這裡。3)非初始化數據段(bss段)——在程序中沒有初始化的全局變量;內核將此段初始化為0。4)棧——增長方向:自頂向下增長;自動變量以及每次函數調用時所需要保存的信息(返回地址;環境信息)。5)堆——動態存儲分。
  • C 中 static 的常見作用
    1.全局靜態變量在全局變量之前加上關鍵字static,全局變量就被定義成為一個全局靜態變量。當static用來修飾全局變量的時候,它就改變了全局變量的作用域(在聲明他的文件之外是不可見的),但是沒有改變它的存放位置,還是在靜態存儲區中。3. 靜態函數在函數的返回類型前加上關鍵字static,函數就被定義成為靜態函數。
  • C語言之 static
    先總結一下 static 的用法,然後再對每一條進行說明:定義全局靜態變量定義局部靜態變量定義靜態函數
  • C/C++中常用的編程關鍵字
    20. export為了訪問其他編譯單元(如另一代碼文件)中的變量或對象,對普通類型(包括基本數據類、結構和類),可以利用關鍵字 extern,來使用這些變量或對象時;但是對模板類型,則必須在定義這些模板類對象和模板函數時,使用標準 C++ 新增加的關鍵字 export(導出)。
  • extern和頭文件
    所以,想從這個問題入手,好好研究一下關鍵字「extern」和頭文件。本文引用地址:http://www.eepw.com.cn/article/201611/322065.htm查了一些資料和一些書。extern可以置於變量或者函數前,以表示變量或者函數的定義在別的文件中,提示編譯器遇到此變量和函數時在其他模塊中尋找其定義。另外,extern也可用來進行連結指定。
  • Fluent UDF【4】:C語言
    所有變量都包含類型、名稱以及值,有時候還包含存儲標記(如靜態變量和外部變量)。C語言中所有的變量在使用之前都必須聲明,這樣C編譯器才會知道該如何為此變量分配內存。4.1 全局變量和局部變量C語言中的全局變量定義在函數的外部,該變量可以被源文件中所有的函數引用。全局變量如果未被聲明為靜態變量的話,還可以被外部函數引用。
  • 詳細剖析 extern "C"
    但 C語言卻是一門單一名字空間的語言,也不允許函數重載,也就是說,在一個編譯和連結的範圍之內,C語言不允許存在同名對象。比如,在一個編譯單元內部,不允許存在同名的函數,無論這個函數是否用static修飾;在一個可執行程序對應的所有目標文件裡,不允許存在同名對象,無論它代表一個全局變量,還是一個函數。
  • 你真的知道C語言裡extern "C" 的作用嗎?
    經常在C語言的頭文件中看到下面的代碼:
  • 【C】如何用好static關鍵字?
    static關鍵字在C語言中相當常用,使用得當能夠有效提高程序的模塊化特性,有利於擴展和維護。
  • Java中的static關鍵字解析
    static關鍵字是很多朋友在編寫代碼和閱讀代碼時碰到的比較難以理解的一個關鍵字,也是各大公司的面試官喜歡在面試時問到的知識點之一。下面就先講述一下static關鍵字的用法和平常容易誤解的地方,最後列舉了一些面試筆試中常見的關於static的考題。