c語言中參數傳遞
A. c語言函數調用時,參數是如何傳遞的
建立中間變數(形參),把實參值賦值給中間變數,當被調函數返回值時,系統釋放掉中間變數。
在程序中通過對函數的調用來執行函數體,其過程與其它語言的子程序調用相似。對無參函數調用時則無實際參數表。實際參數表中的參數可以是常數、變數或其它構造類型數據及表達式。各實參之間用逗號分隔。
函數作為表達式中的一項出現在表達式中,以函數返回值參與表達式的運算。這種方式要求函數是有返回值的。例如:z=max(x,y)是一個賦值表達式,把max的返回值賦予變數z。
(1)c語言中參數傳遞擴展閱讀:
C語言中又規定在以下幾種情況時可以省去主調函數中對被調函數的函數說明。
1、如果被調函數的返回值是整型或字元型時,可以不對被調函數作說明,而直接調用。這時系統將自動對被調函數返回值按整型處理。例8.2的主函數中未對函數s作說明而直接調用即屬此種情形。
2、當被調函數的函數定義出現在主調函數之前時,在主調函數中也可以不對被調函數再作說明而直接調用。例如例8.1中,函數max的定義放在main 函數之前,因此可在main函數中省去對max函數的函數說明int max(int a,int b)。
3、如在所有函數定義之前,在函數外預先說明了各個函數的類型,則在以後的各主調函數中,可不再對被調函數作說明。
B. C語言中,數組做函數參數如何才能按值傳遞
傳數組給一個函數,數組類型自動轉換為指針類型,因而傳的實際是地址。
void func(int array[10])
void func(int array[])
void func(int *array)
所以以上三種函數聲明完全等同。
實際情況是,數組做參數,完全無法按值傳遞。這是由C/C++函數的實現機制決定的。
下一個問題是:為什麼偏要按值傳遞呢?當要在一個函數內使用一個數組時,傳一個指針進去不就行了?只要能訪問到我們所要的數據並對其進行操作,何苦鑽牛角尖。
C. 以下關於C語言函數參數傳遞方式的敘述正確的是
【答案】:A
數據只能由實參單向傳遞給形參稱為「值傳遞」,而不能由形參傳回來給實參,A選項正確;數組名、指針等作參數,實參傳遞給形參的是地址值,這樣形參和實參就指向同一段內存單元,在函數體內對形參數據的改變也將影響到實參。實參和形參之間不可雙向傳遞。B、D選項錯誤。數據不能從形參傳遞給實參,C選項錯誤。