當前位置:首頁 » 編程語言 » c語言形參實參同名
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言形參實參同名

發布時間: 2022-02-25 06:29:26

c語言 為什麼實參和形參不可以同名

可以同名啊 沒有什麼問題
比如
void func(int arg1)
{
//donothing
}

int main()
{
int arg1=1;
func(arg1);
}

⑵ C語言函數調用問題,下面是例子。當形參和實參定義的變數重名的時候,會不會發生沖突為什麼

不會沖突。
像這種簡單類型的,你就直接可以認為形參就是函數的局部變數,在兩個不同的函數中,其局部變數重名是不會相互干擾的。
就像上面的代碼,實參是main函數的局部變數,形參是max函數的局部變數。

⑶ c語言 形參實參

實參:調用的地方使用的變數,可以是變數,也可以是常量
形參:聲明函數的地方或者直接寫子函數代碼的地方用的

int f(int m) //m是形參
{
return m++; //這里m也是形參
}
main()
{
int a=5,b,c;
b=f(a); //這里a是實參
c=f(3); //這里3是實參
}
這樣知道什麼是實參,什麼是形參了吧
其實不管哪裡是實參,哪裡是形參,這個定義名字真的無所謂,我就經常記不住,但是你只要知道怎麼用即可
注意幾個地方,對於參數
1、可以同名,但是不建議實參和形參同名
雖然同名可以使用,但是容易混淆
同名時,就是變數作用域的問題,有點難以把握,容易出錯
2、實參和形參不在同一個內存空間中(除非實參用&來取地址直接傳遞過去,這個c中一般不講,c++中才講)。
這里產生的效果就是在子函數中改變形參的值,不會改變實參的值
&取地址時,那麼形參需要指針形式,因為參數是要地址。因為同在一個內存地址中,所以可以改變實參的值

⑷ C語言中形參與實參名字一致運行時會怎麼樣

樓上說形參只是一個位置,那麼實參就不是一個位置么?這樣說來,任何語句其實都是一個位置對應在硬體上。所以不能那麼解釋。
根源在於:形參也是一個變數,但是這個變數是一個局部變數。
例如我們定義了一個全局變數,在函數內定義了一個和全局變數同名的局部變數,想必大家都清楚,局部變數會隱藏全局變數,即是說全局變數在這個函數內是不可用的。
這和形參的道理是一致的。
參數傳遞實際上是一個初始化的過程,就是定一個形式參數,將實際參數賦值給他。首先,類型一定要匹配。其次,同名沒有關系,就好像是全局變數和局部變數的關系一樣

補充:非常正確。一個函數就是一個獨立的棧,每一個函數有自己的棧,只要函數銷毀,局部變數就會銷毀。

⑸ 在C語言中,形參名與實參名到底是一樣好,還是不一樣好

名字是否相同並不重要,重要的是類型必須相同。

因為,形參是所在函數的局部變數,所以形參在所在函數中會被多次使用,你需要統籌考慮。

而實參是主調函數的局部變數,是根據實際需要作為參數調用被調函數的,是否調用被調函數並不需要另外考慮實參名稱,這是與形參的主要不同點。

⑹ c語言中,函數形參和實參必須相同么

可以相同但也可以不相同

在程序執行的過程中,實參的作用域是主函數,只要程序沒有停止,實參一直有效;形參是定義函數是引入的參數,系統只在該函數被調用時分配臨時內存,當自定義函數執行完後,用於臨時儲存形參的空間將被釋放。所以即使形參和實參的類型,名字完全一樣,系統也能夠把它們區分開。即可以完全一樣。

函數的形參和實參具有以下特點:


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


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


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


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

⑺ C語言中形參與實參可以同名嗎

這個是完全可以的,因為變數存在一個作用域的問題,局部變數只在當前函數范圍有效,全局變數在整個都有效,主要看變數的作用范圍!

⑻ C語言形參和實參名可否一致

可以一致,如你所言,數組是雙向,普通參數則是單向,即函數中的形參只是記號,不影響調用函數中實參數的值。

⑼ c語言:實參和形參可以同名 分別佔用不同的空間 那為什麼很多程序不寫成同名呢

寫成同名不是不可以,而是因為這樣降低了程序的可讀性,拿出一個變數名來,不好判斷到底是那一個

⑽ C語言中形參和實參可不可以完全一樣

編譯器在編譯時默認會做類型檢查,發現行參與實參類型不一致時會提示編譯警告,如果確認賦值調用不存在賦值不兼容,且不會發生溢值現象,可以使用強制類型轉換,跳開編譯警告。 此外,可以也在編譯選項中取消類型檢查。 所以,行參和實參的類型最好一致,應該不是必須。