當前位置:首頁 » 編程軟體 » 程序編譯時形參分配空間嗎

程序編譯時形參分配空間嗎

發布時間: 2022-09-27 11:48:10

c語言 變數在定義時就會分配空間么,那這樣的話定義函數時形參怎麼不是,難道說形參不是定義而是聲明,

定義的時候就會分配 不過分配和釋放的周期不同
比如全局變數,程序開始時就分配,只要程序不退出,空間就不會被釋放
局部變數,函數調用時分配,函數退出時釋放
形參同樣要分配空間的,除非是C++的引用形參。
你可以試試調用一個函數時,列印形參和實參的地址,是不一樣的

java中的形參是不是一定義就立刻分配了內存空間。

形參是肯定基本上不會佔用內存,它只是一個空殼子,但調用的時候用實參去給他賦值同時要實例化,不實例化是不能調用的,而實例化就是一個分配空間的,不就可以說明形參是不被分配內存的。
當然類成員,再用關鍵字static的時候就已經分配了內存。

㈢ 函數聲明中的形式參數會被分配內存空間嗎

會。形參也是局部變數,會分配棧空間。函數運行結束後,使用過的棧空間無意義

㈣ 實參和形參都需要佔用存儲單元么

實參和形參各佔用獨立的存儲單元。

實參和形參是各占獨立存儲空間,函數調用過程中,實參向形參拷貝復制值。實參是個變數,形參也是個變數。

如果佔用同一片空間的話,編譯時候就不存在實參形參類型不匹配的報錯。參數傳遞中,形參值的改變不影響實參的值。


(4)程序編譯時形參分配空間嗎擴展閱讀

形參和實參的區別

1、形參變數只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只有在函數內部有效。函數調用結束返回主調函數後則不能再使用該形參變數。

2、實參可以是常量、變數、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須具有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使實參獲得確定值。

3、實參和形參在數量上,類型上,順序上應嚴格一致,否則會發生「類型不匹配」的錯誤。

4、函數調用中發生的數據傳送是單向的。即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。因此在函數調用過程中,形參的值發生改變,而實參中的值不會變化。

㈤ 幫我解解這個問題,在c程序中定義函數的形參時,系統要不要對形參分配內存空間,說說你的理由!

形參只在這個函數執行的時候才會被分配內存,當函數執行完畢後分配的內存會被釋放。至於理由……函數的參數屬於局部變數,如果一開始就分配的話,別的地方也能訪問修改,數據就不確定了。
另外,函數的形參實際是:調用此函數前,將實參壓入堆棧,然後跳轉到函數的地址執行。函數執行完跳回去時,堆棧彈出,內存釋放。

㈥ c語言形參和實參共占相同的存儲空間

無論是不是指針,形參實參都不是佔用相同的空間。不是指針時,形參和實參的值是相等的;當是指針時,形參和實參都指向同一個地址(其實也就是*p(形參)和*q(實參)的值是相等的),但絕不是相同存儲空間

㈦ 實參和形參都佔用內存么

形參是肯定的。實參的話,如果把寄存器也看作內存的一部分的話,實參也佔用內存。

㈧ java程序是在編譯的時候分配空間的嗎,如果不是那程序在什麼時候給變數分配內存空間

編譯的時候是不會分配空間的,只是將java代碼編譯成位元組碼。是在運行這段代碼的時候才會分配。javac XX.java是編譯代碼,java XX時候是運行代碼。舉個簡單的例子:
class Cs{
int a=1;
public void print(){
System.out.print("a="+a);
}
public static void main(String args[]){
Cs c=new Cs();
c.print();
}}
當你執行到Cs c=new Cs();的時候會初始化變數。將引用變數c放入棧內存,將變數a=1放入堆內存。

熱點內容
監控腳本實用 發布:2022-11-30 14:14:28 瀏覽:377
九陰真經顯血腳本 發布:2022-11-30 14:14:22 瀏覽:196
浪潮伺服器mgn口地址 發布:2022-11-30 14:13:41 瀏覽:821
linux鎖屏設置 發布:2022-11-30 14:08:20 瀏覽:895
演算法轉讓 發布:2022-11-30 14:07:24 瀏覽:23
我的世界為什麼從伺服器斷開連接 發布:2022-11-30 14:07:04 瀏覽:431
怎麼擠出母乳存儲袋中的空氣 發布:2022-11-30 14:05:32 瀏覽:32
linuxbin文件 發布:2022-11-30 14:01:19 瀏覽:480
購物網站源碼php 發布:2022-11-30 13:58:15 瀏覽:475
python執行java 發布:2022-11-30 13:56:23 瀏覽:942