函式引數佔用記憶體空間 全域性變數佔用儲存單元

2025-07-17 19:55:12 字數 3223 閱讀 2475

1樓:程式號正茂

給你舉個例子吧,畫家作畫,黑色筆和白色筆用得最多,畫家可以把黑筆和白筆單獨放乙個筆筒裡,而其他顏色的的筆可能用到渣雀也可能用不到,只有到需要的時候才去找,去找筆就要花時間。全域性變數就相當於黑筆和白筆,一直存在於畫家作畫的整個過程中,但找它們不花時間,拿過來就是了。而其他顏色的筆就相當於一般變數,這裡就是引數,用到時才去找,也就是變數用到時才分配記憶體(花時間去找),廳梁伏如果筆太多,花的時間就越扮攜長。

2樓:網友

整個學生宿舍叫「記憶體空間」,每個寢室叫「儲存單元」

3樓:cpp門徒

/ 全域性變數的有效範圍大,為什麼可以減少函式實參與形液團參的個數?例:

int t = 0;

int func1();

int func2();

void main()

main()呼叫func1、func2如果想儲存範圍值,直接儲存在t就可以了,根本就不用傳引數過去,這肯定減少了傳遞資料的消搜埋旦耗空間。

但是全域性變數在程式的全部執行過程都佔用儲存單元?

區域性變數的範圍是多少?

int t = 0;

void main()

if ( 1 )

int g = 0;

g的範圍只存活在if(){中,而t是一直存在,到程式結束,你說是不是全部執行過程都佔用儲存單元?它一直都存在,不就世擾是嗎。

希望能幫到你!!!

c 語言中全域性變數、區域性變數、函式引數個是在什麼時候分配記憶體空間

4樓:業慶母恬暢

全域性變數是使用相同的記憶體塊在整個類中儲存乙個值。

1,使用全域性變數會佔用更多的記憶體(因為其生命期長),不過在計算機配置很高的今天,這個不成為什麼問題,除非使用的是巨大物件的全域性變數,能避免就一定要避免。

2,使用全域性變數程式執行時速度更快一些(因為記憶體不需要再分配),同樣現在也快不了多少。

3,對於區域性變數的名字空間汙染,這個在不使用太多變數時是可以避免的。

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

區域性變數:在程式中,只在特定的過程或函式中可以訪問的變數,是相對與全域性變數而言的。

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

區域性變數可以和全域性變數重名,但是區域性變數會遮蔽全域性變數。在函式內引用這個變數時,會用到同名的區域性變數,而不會用到全域性變數。

5樓:網友

全域性變數是在main函式之前就分配。

區域性變數在定義時分配,超出作用域後釋放。

靜態區域性變數只分配一次,程式退出後才釋放。

函式引數與區域性變數基本上相同在進入函式時分配,函式結束時釋放。

6樓:科郡

主要是看變數屬於什麼儲存型別,全域性變數、靜態變數儲存於靜態記憶體,區域性變數和函式的形參儲存於堆疊中,不儲存於堆疊中的變數在可執行程式載入記憶體時便分配儲存空間,即在程式執行之前,堆疊中的變數會在定義變數時分配記憶體空間。

7樓:網友

全域性變數是在一開始分配記憶體。

區域性變數在使用時分配,使用完畢釋放 一般是使用的函式被呼叫的時候靜態區域性變數只分配一次,且不會釋放。

函式引數在使用時分配,使用完畢釋放。

區域性變數分配的時候,有沒有可能會佔用全域性變數的空間?

8樓:網友

不會的,區域性變數的空間是叢巧在區域性**執行時分配的空間,而全域性變數是在程式一開始就分團胡配的空間,全域性變數的儲存空間滲或鍵是在全域性區,而區域性變數是在堆疊區,他們的空間不重疊。放心好了。

9樓:匿名使用者

不可能的,你的驗證**有問題。

c程式執行時乙個函式佔多少記憶體空間,高手詳解一下

10樓:網友

函式佔用記憶體要看函式里是什麼了,比如int a[1024],那就是4kb記憶體。

11樓:網友

乙個函式有乙個最大的記憶體空間限制。

大概是int的10000

記憶體空間和程式本身定義的變數有關。

帶遞迴的程式記憶體空間是。

本身定義的變數*遞迴層數。

12樓:網友

這取決於這個函式中定義了多少變數以及變數的型別。

13樓:幸福丶小丑

很難說了。。。時情況而定,你寫的程式現在什麼級別?

14樓:網友

不一定,要看情況!具體自己查吧。

15樓:網友

這個取決於你定義的全域性變數的多少和型別。

c語言關於變數所佔記憶體單元

16樓:曾相林

這個題目選擇a,我現在給你解釋一下這用這幾個關鍵字修飾的變數的意思,auto:強調變數的生存期為自動,也就是說不在任何結構外面申明的變數就是全域性變數,在函式體裡面申明的變數就不是乙個全域性變數(在沒有特別指明的地方);

register:這個說明的意思是說盡量把變數存放在cpu內部的暫存器當中,儘量不要存放在貯存中;

static:這個應該不用說吧;

還有乙個extern:這個的意思是說這個變數是來及外部的,可能並不存在於這個檔案當中,但是肯定在這個工程的某個標頭檔案或者某個dll檔案當中。

好了 上面的分析應該夠了,只有auto能夠可能是乙個區域性的變數 所以答案就是a

17樓:網友

選a,因為它是動態變數,而動態變數是隻有當呼叫改函式時才給它非配記憶體單元,而呼叫完就釋放了。

我也是在網上找到的。

不知道是不是對的啊。

標頭檔案裡定義變數會預先佔用記憶體空間?

18樓:網友

會佔用空間。

標頭檔案一般是要反覆使用的,比如你的程式有多個。c檔案組成,每個。c檔案都可以包含標頭檔案,如果標頭檔案中定義變數,在多次編譯標頭檔案時,編譯程式就會重複申請相同名稱的變數,導致錯誤,所以不建議在標頭檔案中定義變數。

標頭檔案一般定義的是函式呼叫規則以及常量、巨集定義這些不怕重複編譯的說明性內容。

手機的運存要佔用記憶體空間嗎??

首先手機記憶體有兩種,一種是ram也就是執行記憶體,一種是rom也就是儲存記憶體,一般手機的引數都會寫成g g手機記憶體g不含執行記憶體的g的,執行記憶體是固化在手機內部的,所以說 不佔用。不用 手機執行記憶體 是自帶的 不可改變。運存記憶體?這個怎麼說呢 應該說是ram和rom rom是你手機關機後資料不丟失的 ...

電視記憶體怎麼清理,電視記憶體空間不足怎麼辦?如何清理垃圾檔案?

智慧電視一般都是通過金山衛士來清理記憶體,如果用金山衛士清理也只能清理幾十mb的話,建議採取恢復出廠設定來達到清理記憶體的目的。具體的操作步驟如下 開啟電視機,按遙控器的 選單鍵 找到 系統設定 選擇並按 確認 鍵進入 2.進入後的頁面上會出現 系統還原 這個選項,選擇並按 確認 鍵進入 3.開啟系...

電腦記憶體不足 如何釋放記憶體空間,怎樣釋放電腦記憶體

建議用360安全衛士全面體檢修復,然後再用它的優化加速裡的啟動項,禁止一些軟體開機啟動,這樣處理後就可以正常。這樣的軟體有很多,超級兔子,優化大師,記憶體等,去下一個來用就行了。犧牲win7系統特效,換取速度最佳效能 1 win7系統主題 windows7預設的aero主題是很耗費記憶體的,在從登入...