㈠ c語言中形參和實參的問題
test1的形參是int *型指針p,函數中並沒有對形參p做什麼修改,p[5]=20;是修改了形參指針p指向的目標起第5個元素的值,那不就是把6改成20了嗎?
㈡ C語言中實參和形參分別存放在內存的什麼位置
形參只是一個符號,不會分配具體的空間的..當函數被調用的時候,具體給出的參數,也就是實參,其實是一份拷貝..它的內存空間在該函數的堆中進行分配.比如 定義函數 int add(int ,int); 在主函數中 定義變數 int x, y..調用函數 add(x, y);那麼在函數add的堆中會分配出空間,來保存實參x y的拷貝..而主函數中的 x y 是在主函數的堆中保存的... 不曉得有沒有說明白..呵呵
㈢ c語言的形參是否占存儲單元
C。
函數的形參是函數定義時由用戶定義的形式上的變數,實參是函數調用時,主調函數;被調函數提供的原始數據。
形參變數只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只有在函數內部有效。函數調用結束返回主調函數後則不能再使用該形參變數。實參和其所對應的形參分別佔用不同的存儲單元,彼此之間不影響。
(3)c語言中形參和實參的存儲空間擴展閱讀:
形參和實參的特點
1、形參變數只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只在函數內部有效。函數調用結束返回主調用函數後則不能再使用該形參變數。
2、實參可以是常量、變數、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使參數獲得確定值。
3、實參和形參在數量上,類型上、順序上應嚴格一致,否則就會發生類型不匹配的錯誤。
4、在一般傳值調用的機制中只能把實參傳送給形參,而不能把形參的值反向地傳送給實參。因此在函數調用過程中,形參值發生改變,而實參中的值不會變化。而在引用調用的機制當中是將實參引用的地址傳遞給了形參,所以任何發生在形參上的改變實際上也發生在實參變數上。
網路-形參
㈣ c語言中形參和實參是否佔用一個存儲單元
形參只是實參的一個副本,即拷貝,它們不能公用存儲單元。
如果傳入的是指針,那麼形參就是實參的一個指針拷貝。此時,形參指針和實參指針指向同一塊內存區域,雖如此,但是,不能說它們本身占同一個存儲單元。
㈤ 在c語言中 調用函數時,形參與實參可以共用存儲單元嗎
答案肯定的——形參和實參可以完全一樣。
在程序執行的過程中,實參的作用域是主函數,只要程序沒有停止,實參一直有效;
形參是定義函數是引入的參數,系統只在該函數被調用時分配臨時內存,當自定義函數執行完後,用於臨時儲存形參的空間將被釋放。
所以即使形參和實參的類型,名字完全一樣,系統也能夠把它們區分開。即可以完全一樣。
註:解決這個疑問關鍵是要搞清楚變數作用域方面的內容。
㈥ c語言形參和實參共占相同的存儲空間
無論是不是指針,形參實參都不是佔用相同的空間。不是指針時,形參和實參的值是相等的;當是指針時,形參和實參都指向同一個地址(其實也就是*p(形參)和*q(實參)的值是相等的),但絕不是相同存儲空間
㈦ 實參和形參都需要佔用存儲單元么
實參和形參各佔用獨立的存儲單元。
實參和形參是各占獨立存儲空間,函數調用過程中,實參向形參拷貝復制值。實參是個變數,形參也是個變數。
如果佔用同一片空間的話,編譯時候就不存在實參形參類型不匹配的報錯。參數傳遞中,形參值的改變不影響實參的值。
(7)c語言中形參和實參的存儲空間擴展閱讀
形參和實參的區別
1、形參變數只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只有在函數內部有效。函數調用結束返回主調函數後則不能再使用該形參變數。
2、實參可以是常量、變數、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須具有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使實參獲得確定值。
3、實參和形參在數量上,類型上,順序上應嚴格一致,否則會發生「類型不匹配」的錯誤。
4、函數調用中發生的數據傳送是單向的。即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。因此在函數調用過程中,形參的值發生改變,而實參中的值不會變化。
㈧ 在C語言中,以下說法正確的是()。 A.實參和與其對應的形參分別佔用獨立的存儲單元。 B.實參和與
在C語言中實參和與其對應的形參共佔用一個存儲單元。
C語言是一門面向過程、抽象化的通用程序設計語言,廣泛應用於底層開發。C語言能以簡易的方式編譯、處理低級存儲器。
C語言是僅產生少量的機器語言以及不需要任何運行環境支持便能運行的高效率程序設計語言。盡管C語言提供了許多低級處理的功能,但仍然保持著跨平台的特性,以一個標准規格寫出的C語言程序可在包括一些類似嵌入式處理器以及超級計算機等作業平台的許多計算機平台上進行編譯。
(8)c語言中形參和實參的存儲空間擴展閱讀
基本特性
1、高級語言:它是把高級語言的基本結構和語句與低級語言的實用性結合起來的工作單元。
2、結構式語言:結構式語言的顯著特點是代碼及數據的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結構化方式可使程序層次清晰,便於使用、維護以及調試。
C 語言是以函數形式提供給用戶的,這些函數可方便的調用,並具有多種循環、條件語句控製程序流向,從而使程序完全結構化。
3、代碼級別的跨平台:由於標準的存在,使得幾乎同樣的C代碼可用於多種操作系統,如Windows、DOS、UNIX等等;也適用於多種機型。C語言對編寫需要進行硬體操作的場合,優於其它高級語言。
4、使用指針:可以直接進行靠近硬體的操作,但是C的指針操作不做保護,也給它帶來了很多不安全的因素。C++在這方面做了改進,在保留了指針操作的同時又增強了安全性,受到了一些用戶的支持,但是,由於這些改進增加語言的復雜度,也為另一部分所詬病。
Java則吸取了C++的教訓,取消了指針操作,也取消了C++改進中一些備受爭議的地方,在安全性和適合性方面均取得良好的效果,但其本身解釋在虛擬機中運行,運行效率低於C++/C。一般而言,C,C++,java被視為同一系的語言,它們長期占據著程序使用榜的前三名。
參考資料來源:網路-c語言
㈨ C語言:函數的形式參數存放在內存的
形參只是一個符號,不會分配具體的空間的..
當函數被調用的時候,具體給出的參數,也就是實參,其實是一份拷貝..
它的內存空間在該函數的堆中進行分配.
比如
定義函數
int
add(int
,int);
在主函數中
定義變數
int
x,
y..
調用函數
add(x,
y);
那麼在函數add的堆中會分配出空間,來保存實參x
y的拷貝..
而主函數中的
x
y
是在主函數的堆中保存的...
不曉得有沒有說明白..呵呵