国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

c語言全局變量和局部變量問題匯總

這篇具有很好參考價值的文章主要介紹了c語言全局變量和局部變量問題匯總。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

?作者簡介:嵌入式領域優(yōu)質創(chuàng)作者,博客專家
?個人主頁:咸魚弟
??系列專欄:單片機設計專欄?

1、關鍵字static的作用是什么??

定義靜態(tài)變量?

2、static有什么用途?(請至少說明兩種)?

1).限制變量的作用域(在程序的整個運行期間都不釋放)?

2).設置變量的存儲域(存儲在靜態(tài)存儲區(qū)內)?

譚浩強C語言page180:?

(1)對局部變量用static聲明,則為該變量分配的空間在整個程序執(zhí)行期間始終存在;?

(2)全局變量用static聲明,則該變量的作用域只限于本文件模塊?

譚浩強C語言page182的說明將以上兩種答案聯(lián)系在一起,有助于理解static的作用:?

static對于局部變量和全局變量的作用不同。?

對局部變量來說,它是變量由動態(tài)存儲方式改變?yōu)殪o態(tài)存儲方式。對于全局變量來說,它使變量局部化(局部于本文件),但仍為靜態(tài)存儲方式。?

從作用于角度看,凡是static聲明的,其作用域都是有限的,靜態(tài)局部變量局限于本函數(shù)內,靜態(tài)外部變量局限于本文件內。?

3、全局變量和局部變量在內存中是否有區(qū)別?如果有,是什么區(qū)別??

全局變量儲存在靜態(tài)存儲區(qū),局部變量在堆棧。?

4、局部變量能否和全局變量重名??

答:能,局部會屏蔽全局。要用全局變量,需要使用"::"?

局部變量可以與全局變量同名,在函數(shù)內引用這個變量時,會用到同名的局部變量,而不會用到全局變量。?

對于有些編譯器而言,在同一個函數(shù)內可以定義多個同名的局部變量,比如在兩個循環(huán)體內都定義一個同名的局部變量,而局部變量的作用域就在定義的循環(huán)體內。?

5、如何引用一個已經定義過的全局變量?關鍵字extern的使用說明?

答:用關鍵字extern作外部變量聲明?

(1) 用extern可以在一個文件內聲明外部變量(譚浩強CPage176)?

(2) 也可以在多文件的程序中聲明外部變量。(譚浩強CPage177)?

網(wǎng)上的答案是:可以用引用頭文件的方式,但是對于這個說法,筆者之前試著用過,記得是不可以,在不同的源文件中包含這個頭文件時,在程序連接時會出現(xiàn)重復定義multiple public definitions的錯誤,而在不同的源文件中使用這個變量時,也會出現(xiàn)multiple public definitions的錯誤,所以筆者沒有使用這種方法,而是使用關鍵字extern?

網(wǎng)上的另一個答案是:也可以用extern關鍵字,也就是在其中一個源文件中定義外部變量,而在另外使用該變量的源文件開始的位置將這個變量用關鍵字extern聲明。?

網(wǎng)上:如果用引用頭文件方式來引用某個在頭文件中聲明的全局變量,假定你將那個變量寫錯了,那么在編譯期間會報錯,如果你用extern方式引用時,假定你犯了同樣的錯誤,那么在編譯期間不會報錯,而在連接期間報錯。?

6、全局變量可不可以定義在可被多個.C文件包含的頭文件中?為什么??

網(wǎng)上答案:可以,在不同的C文件中以static形式來聲明同名全局變量。?

可以在不同的C文件中聲明同名的全局變量,前提是其中只能有一個C文件中對此變量賦初值,此時連接不會出錯。?

筆者按照以上說法去試,出現(xiàn)了“重復定義”的錯誤,分析:因為變量的定義只能出現(xiàn)一次,否則會導致重復定義。但卻可以聲明多次。全局變量定義在頭文件中。當該頭文件被多個c文件包含的話,就會導致重復定義。所以全局變量不可以定義在頭文件中。?

網(wǎng)上對這道題有人這樣說:一般做法是在某個特定的頭文件中聲明,而在另外一個特定的c文件中定義。需要使用就包含前者。此處的聲明我認為應該用extern,不過沒有去實踐。?

7、static全局變量與普通的全局變量有什么區(qū)別?static局部變量和普通局部變量有什么區(qū)別?static函數(shù)與普通函數(shù)有什么區(qū)別??

全局變量(外部變量)的說明之前再冠以static 就構成了靜態(tài)的全局變量。全局變量本身就是靜態(tài)存儲方式,靜態(tài)全局變量當然也是靜態(tài)存儲方式。這兩者在存儲方式上并無不同。這兩者的區(qū)別雖在于非靜態(tài)全局變量的作用域是整個源程序,當一個源程序由多個源文件組成時,非靜態(tài)的全局變量在各個源文件中都是有效的。而靜態(tài)全局變量則限制了其作用域,即只在定義該變量的源文件內有效,在同一源程序的其它源文件中不能使用它。由于靜態(tài)全局變量的作用域局限于一個源文件內,只能為該源文件內的函數(shù)公用,因此可以避免在其它源文件中引起錯誤。?

從以上分析可以看出,把局部變量改變?yōu)殪o態(tài)變量后是改變了它的存儲方式即改變了它的生存期。把全局變量改變?yōu)殪o態(tài)變量后是改變了它的作用域,限制了它的使用范圍。?

static函數(shù)與普通函數(shù)作用域不同。僅在本文件。只在當前源文件中使用的函數(shù)應該說明為內部函數(shù)(static),內部函數(shù)應該在當前源文件中說明和定義。對于可在當前源文件以外使用的函數(shù),應該在一個頭文件中說明,要使用這些函數(shù)的源文件要包含這個頭文件。?

static全局變量與普通的全局變量有什么區(qū)別:static全局變量只初始化一次,防止在其他文件單元中被引用;?

static局部變量和普通局部變量有什么區(qū)別:static局部變量只被初始化一次,下一次依據(jù)上一次結果值;?

static函數(shù)與普通函數(shù)有什么區(qū)別:static函數(shù)在內存中只有一份,普通函數(shù)在每個被調用中維持一份拷貝。?

8、局部變量能否和全局變量重名?

答:能,局部會屏蔽全局。要用全局變量,需要使用"::"

局部變量可以與全局變量同名,在函數(shù)內引用這個變量時,會用到同名的局部變量,而不會用到全局變量。對于有些編譯器而言,在同一個函數(shù)內可以定義多個同名的局部變量,比如在兩個循環(huán)體內都定義一個同名的局部變量,而那個局部變量的作用域就在那個循環(huán)體內。

9、如何引用一個已經定義過的全局變量?

答:extern

可以用引用頭文件的方式,也可以用extern關鍵字,如果用引用頭文件方式來引用某個在頭文件中聲明的全局變理,假定你將那個變寫錯了,那么在編譯期間會報錯,如果你用extern方式引用時,假定你犯了同樣的錯誤,那么在編譯期間不會報錯,而在連接期間報錯。文章來源地址http://www.zghlxwxcb.cn/news/detail-464519.html

到了這里,關于c語言全局變量和局部變量問題匯總的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 全局變量、局部變量和靜態(tài)變量

    全局變量、局部變量和靜態(tài)變量

    定義:在函數(shù)外定義的變量是全局變量,全局變量可以為本文件中其它函數(shù)所共用,它的有效范圍從定義變量的位置開始到本源文件結束。 設全局變量的作用:增加了函數(shù)間數(shù)據(jù)聯(lián)系的渠道; 不必要時不要使用全局變量,因為:a) 全局變量在程序的全部執(zhí)行過程中都占用存

    2024年02月06日
    瀏覽(20)
  • Golang 局部變量、全局變量 聲明

    Golang 局部變量、全局變量 聲明

    四種聲明方式 + 多變量聲明: 全局變量的聲明和局部變量的聲明方式一、二、三 相同; 但是不能使用局部變量聲明方式四 (:=) 來聲明全局變量。

    2024年02月13日
    瀏覽(24)
  • Java成員變量(全局變量)和局部變量

    在Java中變量類型有 成員變量 、 局部變量 和 靜態(tài)變量(類變量、static變量) ,本篇文章主要介紹成員變量(全局變量)和局部變量的區(qū)別。 根據(jù)變量的作用范圍,將程序中的變量分為成員變量(全局變量)和局部變量。 一、成員變量(全局變量) 成員變量(全局變量):

    2024年02月04日
    瀏覽(35)
  • Python的全局變量、局部變量、類變量、實例變量介紹

    Python的全局變量、局部變量、類變量、實例變量介紹

    Python 的變量分類 全局變量:模塊內、所有函數(shù)外、所有class外的變量; 局部變量:函數(shù)內的變量,class的方法內且不使用self.修飾的變量; 類變量:class內且不在class的方法內; 實例變量:class的方法內且使用self.修飾的變量。 對于面向過程程序設計涉及: 全局變量:模塊中

    2024年02月03日
    瀏覽(29)
  • 變量的存儲類型(全局,局部,靜態(tài),動態(tài))

    存儲類型 是指變在內存中的存儲方式,有靜態(tài)存儲和動態(tài)存儲方式。 1.靜態(tài)存儲方式 靜態(tài)存儲方式的變量存儲在內存的靜態(tài)區(qū),在程序編譯時就已經分配好了內存空間。在整個程序運行時,該變量一直占有固有的內存空間,程序結束后才釋放該部分內存空間。其中靜態(tài)局部

    2024年02月03日
    瀏覽(20)
  • Python全局變量和局部變量(超詳細,純干貨,保姆級教學)

    Python全局變量和局部變量(超詳細,純干貨,保姆級教學)

    ????????????????????????在函數(shù)外部定義的變量。所有函數(shù)內部都可以使用這個變量。 ????????????????????????在函數(shù)內部定義的變量。這個變量只能在定義這個變量的函數(shù)內部使用。 定義看起來一愣一愣的,沒關系我也是。我將會用實例的方式為你

    2024年02月05日
    瀏覽(25)
  • Java中的全局變量和局部變量(看這篇就夠了)

    在Java中,全局變量和局部變量是兩種不同作用域的變量。 全局變量(成員變量) : 在類中定義的變量稱為成員變量,也叫全局變量。它們的作用域是整個類,在類的任何地方都可以被訪問。 如果沒有顯式地初始化,它們會有默認值。 全局變量可以是基本數(shù)據(jù)類型(如int、

    2024年02月04日
    瀏覽(32)
  • Labview局部變量、全局變量、引用、屬性節(jié)點、調用節(jié)點用法理解及精講

    Labview局部變量、全局變量、引用、屬性節(jié)點、調用節(jié)點用法理解及精講

    寫本章前想起題主初學Labview時面對一個位移臺程序,傻傻搞不清局部變量和屬性節(jié)點值有什么區(qū)別,概念很模糊。所以更新這篇文章讓大家更具象和深刻的去理解這幾個概念,看完記得點贊加關注喔~ 本文程序源代碼附在后面,大家可以自行下載學習。 本文的結構還是首先教

    2024年01月20日
    瀏覽(23)
  • FPGA設計Verilog基礎之Verilog全局變量和局部變量定義

    FPGA設計Verilog基礎之Verilog全局變量和局部變量定義

    注意:后續(xù)技術分享,第一時間更新,以及更多更及時的技術資訊和學習技術資料 ,將在公眾號 CTO Plus 發(fā)布,請關注公眾號: CTO Plus ? 在Verilog中,變量可以分為全局變量和局部變量兩種類型。全局變量在整個模塊中都可以使用,而局部變量只能在某個特定的代碼塊中使用。

    2024年02月15日
    瀏覽(38)
  • Kafka如何保證消息的消費順序【全局有序、局部有序】、Kafka如何保證消息不被重復消費、Kafka為什么這么快?【重點】、Kafka常見問題匯總【史上最全】

    Kafka如何保證消息的消費順序【全局有序、局部有序】、Kafka如何保證消息不被重復消費、Kafka為什么這么快?【重點】、Kafka常見問題匯總【史上最全】

    目錄 Kafka消息生產 一個Topic對應一個Partition 一個Topic對應多個Partition Kafka消息的順序性保證(Producer、Consumer) 全局有序 局部有序? max.in.flight.requests.per.connection參數(shù)詳解 Kafka的多副本機制 Kafka的follower從leader同步數(shù)據(jù)的流程 Kafka的follower為什么不能用于消息消費 Kafka的多分區(qū)

    2024年04月11日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包