C语言中函数参数传递的本质是值传递
生活随笔
收集整理的這篇文章主要介紹了
C语言中函数参数传递的本质是值传递
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數組名做函數參數進行傳遞時,實際上是是一份該指針的拷貝。
給形參賦予其他值,并不影響實參的值。
類似于:
int *p = a; //a為數組名
p = b; //b為數組名
當然,如果你傳遞了一個指向某個變量的指針,而函數對該指針執行了間接訪問操作,那么函數就可以改變那個變量,但參數還是傳值方式傳遞的,這是兩個概念,不矛盾。
對于字符串復制函數strcpy:
void strcpy(char *buffer, char const *string)
{
while((*buffer++ = *string++) != '\0')
;
}
把第2個參數中的字符串復制到第1個參數所指向的緩沖區。調用程序的緩沖區將被修改,因為函數對參數進行了間接訪問操作。但是,無論函數對參數(指針)如何修改,都不會修改調用程序的指針實參本身(但可能修改他所指向的內容)。
注意while語句中的 *string++表達式。他取得string所指向的那個字符,并且產生一個副作用,就是修改string,使它指向下一個字符。用這種方式修改形參并不會影響調用程序的實參,因為只有傳遞給函數的那份拷貝進行了修改。
總結
以上是生活随笔為你收集整理的C语言中函数参数传递的本质是值传递的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux下的指令:find,which
- 下一篇: 小程序开发-媒体组件video使用入门