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