函數(shù)的傳值和傳指針
向函數(shù)傳參數(shù)時(shí),一般而言,傳入非const的指針時(shí),就表示,在函數(shù)中要修改這個(gè)指針把指內(nèi)存中的數(shù)據(jù)。如果是傳值,那么無(wú)論在函數(shù)內(nèi)部怎么修改這個(gè)值,也影響不到傳過(guò)來(lái)的值,因?yàn)閭髦凳侵粌?nèi)存拷貝。讓我們看看下面的這個(gè)例程:
void GetVersion(char* pStr)
{
pStr = malloc(10);
strcpy ( pStr, "2.0" );
}
void main()
{
char* ver = NULL;
GetVersion ( ver );
...
...
free ( ver );
}
類似這樣的問(wèn)題是一個(gè)新手最容易犯的錯(cuò)誤。程序中妄圖通過(guò)函數(shù)GetVersion給指針ver分配空間,但這種方法根本沒(méi)有什么作用,原因就是――這是傳值,不是傳指針。你或許會(huì)和我爭(zhēng)論,我分明傳的時(shí)指針啊?再仔細(xì)看看,其實(shí),你傳的是指針其實(shí)是在傳值。