C語言局部變量和全局變量的區別

2020-12-21 騰訊網

局變量是使用相同的內存塊在整個類中存儲一個值。

全局變量的存在主要有以下一些原因:

1,使用全局變量會佔用更多的內存(因為其生命期長),不過在計算機配置很高的今天,這個不成為什麼問題,除非使用的是巨大對象的全局變量,能避免就一定要避免。

2,使用全局變量程序運行時速度更快一些(因為內存不需要再分配),同樣現在也快不了多少。

3,對於局部變量的名字空間汙染,這個在不使用太多變量時是可以避免的。

總之,全局變量可以使用,但是全局變量使用時應注意的是儘可能使期名字易於理解,而且不能太短,避免名字空間的汙染;避免使用巨大對象的全局變量。

局部變量說明:

在程序中,只在特定的過程或函數中可以訪問的變量,是相對與全局變量而言的。

全局變量也稱為外部變量,是在函數的外部定義的,它的作用域為從變量定義處開始,到本程序文件的末尾。全局變量全部存放在靜態存儲區,在程序開始執行時給全局變量分配存儲區,程序行完畢就釋放。

局部變量可以和全局變量重名,但是局部變量會屏蔽全局變量。在函數內引用這個變量時,會用到同名的局部變量,而不會用到全局變量。根據使用範圍來區分的。

1.局部變量

他是 指在函數內部定義的變量 作用域為定義局部變量的函數 也就是說他只能在定義他的函數中使用

最值得注意的是 只有在程序執行到定義他的模塊時才能生成,一旦執行退出該模塊則起變量消失

func ()

{

int x; 局部變量x的作用域 很明確

......

}

2.全局變量

在程序執行的過程中一直有效

intx=1;

func ()

{

x=x+1;

}

func1 ()

{

x=x-1;

}

main ()

{

}

由此不難看出整型x的作用範圍

對於全局變量 如果在定義的時候不做初始化 則系統將自動為起賦值 數值型為0

字符型為空'\0'

全局變量的弊端 增加內存開銷 降低函數的通用性

定義全局變量時,理想的位置是在文件的開頭,當這些函數以及同一個程序中的其他源程序文件中的某些函數需要使用該全局變量時,在函數內部對該變量使用extern 加以說明,說明他是外部的。

(這裡還要做詳細的講解)

main ()

inta=1,b=2;int min (x,y)int x,y;

相關焦點

  • C語言二級必備知識,全局變量和局部變量,一看就會的C語言知識。
    局部變量定義變量一般有三種形式:在函數的開頭定義在函數的外部定義在複合語句中定義其中在函數的開頭和在複合語句中定義的時候,只能在函數內部和該複合語句中使用,像這種變量稱為局部變量。全局變量:我們知道程序的編譯單位是源程序文件,而一個源程序可以包含若干個函數。在函數內部定義的變量稱為局部變量,在函數外部定義的變量成為全局變量,也叫全程比變量。 全局變量可以為其他函數所使用,他的作用域是從定義到源文件的的結束。
  • 全局變量和成員變量的區別分析
    變量分為局部與全局,局部變量又可稱之為內部變量。由某對象或某個函數所創建的變量通常都是局部變量,只能被內部引用,而無法被其它對象或函數引用。   全局變量既可以是某對象函數創建,也可以是在本程序任何地方創建。全局變量是可以被本程序所有對象或函數引用。一個局部變量在被其它對象引用時,會是一個空值。但全局變量卻不會出現這種情況。
  • C語言全局變量那些事兒
    其次是語法/語義:從作用域上看,帶static關鍵字的全局變量範圍只能限定在文件裡,否則會外聯到整個模塊和項目中;從生存期來看,它是靜態的,貫穿整個程序或模塊運行期間(注意,正是跨單元訪問和持續生存周期這兩個特點使得全局變量往往成為一段受攻擊代碼的突破口,了解這一點十分重要);從空間分配上看,定義且初始化的全局變量在編譯時在數據段(.data)分配空間,定義但未初始化的全局變量
  • C語言中,全局變量濫用的後果竟如此嚴重?
    01啥是全局變量說起全局變量,就不得不提到「全局變量,局部變量,靜態全局變量,靜態局部變量」,這些都是程式語言中的基本概念。它只被初始化一次,自從第一次初始化直到程序與你新內閣結束都一直存在,他和全局變量的區別在於全局變量對所有的函數都是可見的,而靜態局部變量只對定義自己的函數體始終可見。局部變量也只有局部作用域,他是自動對象,他在程序運行期間不是一直存在,而是只在函數執行期間存在,函數的一次調用結束後,變量就被撤銷,其所佔用的內存也被收回。
  • 一文讀懂Python中的全局變量局部變量和作用域
    通常小白在寫代碼時,只知道引用變量來應對一些基礎的編碼問題,當面試官問及局部變量和全局變量的具體細節時,就會一臉懵逼,傻傻分不清楚!其實想要徹底了解局部變量和全局變量的關係,本質是大家需要明白何為作用域!這篇文章會帶大家徹底搞懂這三者之的唇齒相依的關聯!Python中,程序的變量並不是在哪個位置都可以訪問的,訪問權限決定於這個變量是在哪裡賦值的。
  • 使用CSS變量進行主題化:全局變量和局部變量
    將CSS變量設置為設計系統的主題可能會有些棘手: 如果它們太顯眼, 系統就會失去一致性。 如果它們太全局化, 你就會失去粒度。也許我們可以解決這兩個問題。 我想嘗試將設計系統變量歸結為兩種類型: 全局變量和組件變量。 全局變量將使我們在組件間保持一致性。組件變量將給我們帶來粒度和隔離。讓我用一個相當簡單的組件作為例子來告訴你怎麼做。
  • JS代碼中如何使用局部變量和全局變量
    JS開發人員在編寫代碼時可能犯的最大錯誤之一就是聲明不必要的全局變量。全局變量對程式設計師非常有幫助,但如果不謹慎使用它們,它們會影響任何瀏覽器的速度和效率。簡短說明全局變量和局部變量JS中主要使用兩種類型的變量:局部變量和全局變量。
  • C語言可以在執行語句中間定義變量嗎?
    .cpp的,很多同學平時懶得改成.c後綴名,覺得運行時候也都一樣沒啥區別,所以很容易弄混。那在C語言裡面有什麼要求?一般老師會講:在C語言裡,變量只能在函數的開頭處聲明和定義。在函數裡要用到的變量必須要在開頭處聲明定義。
  • 說一說C語言中的變量存儲類型——「extern」
    變量存儲類型關係到其存儲位置,除了register型存儲在CPU寄存器中,C語言提供的其它三種存儲類型(auto型、static型、extern型)的變量均存儲在內存中。存儲位置不同,決定了變量的生存期和作用域。從時間角度來說,C語言中變量分為靜態存儲和動態存儲兩種情況。靜態存儲指的是變量存儲在內存的靜態存儲區,程序編譯時就為其分配空間並初始化,佔有固定存儲單元直至程序結束。
  • C語言中的變量存儲類型static老手都這樣用
    1、 先來回顧C語言變量C語言中變量值的存儲位置有兩類:CPU的寄存器和內存。變量存儲類型關係到其存儲位置,除了register型存儲在CPU寄存器中,C語言提供的其它三種存儲類型(auto型、static型、extern型)的變量均存儲在內存中。
  • C語言全局變量存放在哪裡?
    全局變量的作用域是從全局變量定義的位置到本源文件結束都有效。我們先看一下全局變量在反彙編中是怎麼體現的,如示例示例代碼CH07_3_4。6: int j = i;00401028 mov eax,[i (00421a30)]這一行中(00421a30)正是全局變量i的存放地址。全局變量編譯的時候就已經確定了內存地址和寬度,變量名就是內存地址的別名。如果不重新編譯(也就是不重新構建程序),全局變量的內存地址將不會改變。
  • C語言,局部變量的指針,棧幀
    C/C++不能返回局部變量的指針,是一條重要的語法規則。至於為什麼,則不是那麼顯眼。局部變量,是分配在棧上的變量,隨著函數調用的返回而失效。函數調用結束之後,局部變量的指針,也就是野指針了,不能在函數外繼續使用。
  • 物聯網開發筆記——嵌入式開發之Linux系統中C語言變量
    本節介紹《Linux系統中C語言變量》。變量其實只不過是程序可操作的存儲區的名稱。C 語言中每個變量都有特定的類型,類型決定了變量存儲的大小和布局,該範圍內的值都可以存儲在內存中,運算符可應用於變量上。變量的名稱可以由字母、數字和下劃線字符組成。它必須以字母或下劃線開頭。大寫字母和小寫字母是不同的,因為 C 是大小寫敏感的。
  • 嵌入式開發- C語言數據類型-變量
    1、變量的基礎-掌握變量在程序中用變量名表示,變量名由用戶根據其用途任意命名變量名郵字母、數字、下劃線組成 不能以數字開頭,也不能和C關鍵字重名2、變量的說明-掌握變量在程序中使用時,必須先說明它們的存儲類型和數據類型變量說明的一般形式是
  • C語言(初學)函數局部變量的銷毀
    C語言#C語言的中的函數是實現一個功能板塊,它的巧妙使用關乎到我們要開發的項目的順利。我前一陣看了書也了解了一個函數的問題,就是函數的局部變量的指針還回的函數的問題。代碼比如上面圖片的中的fun函數,它是有返回值函數並且返回值為整型指針,這個函數在功能上是還回我們在函數內部設的局部變量的地址。
  • C語言中的變量詳解
    C中的變量,按作用域可分為兩種,局部變量和全局變量。局部變量:也稱內部變量。局部變量是在函數內做定義說明的,其作用域僅限於函數內部,離開函數後再使用這種變量是非法的。在函數中使用全局變量,一般要作全局變量說明。只有在函數內經過說明的全局變量才能使用。全局變量的說明符extern。但在一個函數之前定義的全局變量,在該函數內使用可不再加以說明。
  • C語言開發單片機為什麼大多數都採用全局變量的形式?
    問他們為什麼,回答是「全局變量方便調試」。事實上在學校裡做搞自動控制的人最重要的根本就是控制的結果,而不是代碼本身。代碼只要能工作就行。變量名汙染,低耦合之類的和他們就不在同一個世界。進了公司有些人代碼質量會變好,但有的還是會延續之前的習慣。
  • C/C++編程筆記:const 變量詳解!一文了解具體用法
    全局const變量默認為外部聯編的案例。const變量與局部const變量基本相同,只是內存開闢在全局/堆區,對於c++而言,全局const變量默認為內部聯編,可以在定義時加extern關鍵字聲明為外部聯編。
  • for循環中的局部變量引起的問題
    可以看到,這裡的 x 是一個在for循環的局部變量,按照正常的理解,在for循環外面調用 x 應該是報錯的,但是在Python中,for循環裡面聲明的變量,在for循環結束後,會保留 x 的值。第二種情況那如果我們直接聲明一個全局變量呢,最後輸出的會是最開始的值嗎?
  • 什麼是 全局變量 & 宏 & 大程序怎麼寫,看這一篇就夠了
    全局變量認識 全局變量定義在函數外的變量就是全局變量全局變量具有全局的生存期和作用域它們與任何函數無關任何函數(定義在全局變量後的的函數)內部都可以使用它們例如:intf(void);int gAll = 12;intmain(void){//__func__ 可以列印出當前函數的函數名,下劃線一邊是兩個printf(