C語(yǔ)言形參與實(shí)參

C語(yǔ)言中形參與實(shí)參的關(guān)系是:形參是實(shí)參的值副本,無(wú)論參數(shù)的類(lèi)型是什么,傳遞到子函數(shù)的形參只是實(shí)參的值。在子函數(shù)里改變形參的值,并不會(huì)影響實(shí)參,通俗說(shuō)就是形參的改變不會(huì)影響實(shí)參。
但是,如果參數(shù)是指針類(lèi)型,則可以通過(guò)指針變量所指地址進(jìn)行數(shù)據(jù)的改變,達(dá)到改變實(shí)參地址中的數(shù)據(jù)的目的。
在使用 swap 函數(shù)時(shí),一定要保證上述兩點(diǎn),即:參數(shù)一定要是指針類(lèi)型,指向待交換的數(shù)據(jù);swap函數(shù)里交換的一定是地址中的數(shù)據(jù),而不是地址。

以下幾種寫(xiě)法

  1. 正確的寫(xiě)法:
{  
     int temp;
     temp = *a;
     *a = *b;
     *b = temp;
}```
2. 錯(cuò)誤的寫(xiě)法①,錯(cuò)在交換的只是指針變量的地址,且形參的改變不能影響實(shí)參的值,并不是交換指針?biāo)赶虻臄?shù)據(jù)。
``` void swap(*int a,*int b)  
{  
     int *temp;
     temp = a;
     a = b;
     b = temp;
}```
3. 錯(cuò)誤寫(xiě)法②,該函數(shù)的形參并不是指針類(lèi)型,行參的改變并不影響實(shí)參的值。
``` void swap(int a,int b)  
{  
     int temp;
     temp = a;
     a = b;
     b = temp;
}```
####重要提示,C語(yǔ)言中的形參是非指針類(lèi)型的子函數(shù),返回值至多一個(gè);而形參是指正類(lèi)型的子函數(shù)則可以返回多個(gè)值。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容