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

2020-12-17 騰訊網

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

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

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;

相關焦點

  • 詳解python 局部變量與全局變量
    一旦本文將詳細分析python的全局變量與局部變量,學過php的人都知道,php裡面的全局變量是無法在function裡面去使用的,只有超全局變量才可以
  • Python函數中的全局變量與局部變量
    def first():    # 這個變量是函數內部定義的變量,屬於局部變量,只能在函數中使用    c = "Hello"    # 大括號{} 是format()函數的用法,格式化    print("c = {}".format(c))    # 如果局部變量定義的名稱與全局變量相同,相當於是在函數中又定義了一個新的局部變量
  • C語言全局變量那些事兒
    其次是語法/語義:從作用域上看,帶static關鍵字的全局變量範圍只能限定在文件裡,否則會外聯到整個模塊和項目中;從生存期來看,它是靜態的,貫穿整個程序或模塊運行期間(注意,正是跨單元訪問和持續生存周期這兩個特點使得全局變量往往成為一段受攻擊代碼的突破口,了解這一點十分重要);從空間分配上看,定義且初始化的全局變量在編譯時在數據段(.data
  • C語言中,全局變量濫用的後果竟如此嚴重?
    01啥是全局變量說起全局變量,就不得不提到「全局變量,局部變量,靜態全局變量,靜態局部變量」,這些都是程式語言中的基本概念。它只被初始化一次,自從第一次初始化直到程序與你新內閣結束都一直存在,他和全局變量的區別在於全局變量對所有的函數都是可見的,而靜態局部變量只對定義自己的函數體始終可見。局部變量也只有局部作用域,他是自動對象,他在程序運行期間不是一直存在,而是只在函數執行期間存在,函數的一次調用結束後,變量就被撤銷,其所佔用的內存也被收回。
  • Python 局部變量,全局變量,nonlocal 變量用法
    Python 局部變量,全局變量,非局部變量是 Python 三種常見的變量,它們與變量作用域息息相關
  • PHP static局部靜態變量和全局靜態變量總結
    靜態局部變量的特點:1.不會隨著函數的調用和退出而發生變化,不過,儘管該變量還繼續存在,但不能使用它。
  • C語言全局變量存放在哪裡?
    全局變量的作用域是從全局變量定義的位置到本源文件結束都有效。我們先看一下全局變量在反彙編中是怎麼體現的,如示例示例代碼CH07_3_4。全局變量編譯的時候就已經確定了內存地址和寬度,變量名就是內存地址的別名。如果不重新編譯(也就是不重新構建程序),全局變量的內存地址將不會改變。
  • 說一說C語言中的變量存儲類型——「extern」
    存儲位置不同,決定了變量的生存期和作用域。從時間角度來說,C語言中變量分為靜態存儲和動態存儲兩種情況。靜態存儲指的是變量存儲在內存的靜態存儲區,程序編譯時就為其分配空間並初始化,佔有固定存儲單元直至程序結束。
  • C語言中的變量存儲類型static老手都這樣用
    1、 先來回顧C語言變量C語言中變量值的存儲位置有兩類:CPU的寄存器和內存。變量存儲類型關係到其存儲位置,除了register型存儲在CPU寄存器中,C語言提供的其它三種存儲類型(auto型、static型、extern型)的變量均存儲在內存中。
  • C語言,局部變量的指針,棧幀
    C/C++不能返回局部變量的指針,是一條重要的語法規則。至於為什麼,則不是那麼顯眼。局部變量,是分配在棧上的變量,隨著函數調用的返回而失效。函數調用結束之後,局部變量的指針,也就是野指針了,不能在函數外繼續使用。
  • C/C+編程筆記:const 變量詳解!一文了解具體用法
    由於分文件編寫,不好呈現,所以在這裡不為大家提供c語言全局const變量默認為外部聯編的案例。如果各讀者有興趣,可自行嘗試。 2、普通全局const變量 與局部const變量基本相同,只是內存開闢在全局/堆區,對於c++而言,全局const變量默認為內部聯編,可以在定義時加
  • C語言中的變量詳解
    當然不僅僅是形參變量,在C中所有的量都有自己的作用域。C中的變量,按作用域可分為兩種,局部變量和全局變量。局部變量:也稱內部變量。局部變量是在函數內做定義說明的,其作用域僅限於函數內部,離開函數後再使用這種變量是非法的。
  • 什麼是靜態變量?它與臨時變量有什麼區別?(深入解讀)
    變量有兩個特性:作用域和生命周期。變量的作用域是指變量的作用範圍,也就是在哪些範圍內該變量是有效的。根據作用域的不同,變量可以分為全局變量(Global Variable)和局部變量(Local Variable)。全局變量在整個程序範圍內都有效。在C語言中,全局變量是在函數外部聲明的變量。
  • 它和變量有什麼區別?
    它和變量有什麼區別?有興趣的朋友可以了解一下!一、前言php是一門很受歡迎的程式語言之一,它的語法簡單易學,迎來了一大批自學者,小編也是其中之一。小編自學php學了四個多月吧!雖然算不上精通,但是也算得上小有成就,獨立開發中小型網站還是不成問題的。
  • php變量是什麼?php變量的數據類型、命名規則等詳細介紹
    本篇將介紹「php變量是什麼?php變量的數據類型、命名規則以及php變量的使用教程」,有興趣的朋友可以了解一下!一、前言php是一門開源的腳本語言,它的語法簡單實用,利於學習,被廣泛的使用於Web開發領域。目前很多中小型網站都是使用php語言開發的,如果我們能學好php語言,也是很有前途的。今天小編為什麼要介紹php變量?
  • python進階教程之變量
    局部變量和全局變量提示:在其他的開發語言中,大多 不推薦使用全局變量 —— 可變範圍太大,導致程序不好維護!>print("over")```局部變量的生命周期3.2 全局變量```python定義一個全局變量num = 10def demo1():print(num)def demo2():print(num)demo1() demo2()
  • C語言中auto register static const volatile 區別
    1)auto這個關鍵字用於聲明變量的生存期為自動,即將不在任何類、結構、枚舉、聯合和函數中定義的變量視為全局變量,而在函數中定義的變量視為局部變量。這個關鍵字不怎麼多寫,因為所有的變量默認就是auto的。
  • 強制了解const,C語言變量和常量!C語言系列教程!編號零零六
    C語言變量AC程式語言中的變量是指定的存儲器位置,用戶可以在程序執行期間存儲相同數據類型的不同值。這意味著變量是給予內存位置的名稱,我們可以在其中存儲相同數據類型的不同值。換句話說,變量可以定義為在程序執行期間保存相同數據類型值的存儲容器。數據類型的正式定義如下......
  • C語言 | static靜態變量
    在編程方面有著天賦異稟的人畢竟是少數,我們大多數人想要從C語言小白進階到高手,需要經歷的是日積月累的學習。那麼如何學習呢?當然是每天都練習一道C語言題目!!作者閆小林白天搬磚,晚上做夢。我有故事,你有酒麼?例87:學習C語言static定義靜態變量的用法。
  • 深入理解靜態變量
    所以,我們可以判定,全局變量的生命周期是從所處模塊裝載到所處模塊卸載。編譯器控制跨文件訪問:限制導出全局靜態變量主要用途就是限制導出,實現其函數和變量的私有化,編譯器通過限制導出機制來控制其跨文件訪問的。