/*這一系列文章《C++ Tips》是公司Code Committee專家會推薦工程師看的,,感覺很好,拿出來與大家共同提高,。并不是知道多少會使人與人產(chǎn)生差別,,真正的差別在于你能做到多少。
向函數(shù)傳參數(shù)時,,一般而言,,傳入非const的指針時,就表示,,在函數(shù)中要修改這個指針把指內(nèi)存中的數(shù)據(jù),。如果是傳值,那么無論在函數(shù)內(nèi)部怎么修改這個值,,也影響不到傳過來的值,,因為傳值是只內(nèi)存拷貝。讓我們看看下面的這個例程:
void GetVersion(char* pStr)
{
pStr = malloc(10);
strcpy ( pStr, "2.0" );
}
void main()
{
char* ver = NULL;
GetVersion ( ver );
...
...
free ( ver );
}
類似這樣的問題是一個新手最容易犯的錯誤。程序中妄圖通過函數(shù)GetVersion給指針ver分配空間,,但這種方法根本沒有什么作用,,原因就是――這是傳值,不是傳指針,。你或許會和我爭論,,我分明傳的時指針啊,?再仔細看看,,其實,你傳的是指針其實是在傳值,。
向函數(shù)傳參數(shù)時,,一般而言,傳入非const的指針時,,就表示,,在函數(shù)中要修改這個指針把指內(nèi)存中的數(shù)據(jù)。如果是傳值,,那么無論在函數(shù)內(nèi)部怎么修改這個值,,也影響不到傳過來的值,因為傳值是只內(nèi)存拷貝,。讓我們看看下面的這個例程:
void GetVersion(char* pStr)
{
pStr = malloc(10);
strcpy ( pStr, "2.0" );
}
void main()
{
char* ver = NULL;
GetVersion ( ver );
...
...
free ( ver );
}
類似這樣的問題是一個新手最容易犯的錯誤,。程序中妄圖通過函數(shù)GetVersion給指針ver分配空間,但這種方法根本沒有什么作用,,原因就是――這是傳值,,不是傳指針。你或許會和我爭論,,我分明傳的時指針?。吭僮屑毧纯?,其實,,你傳的是指針其實是在傳值。
本文引用通告地址: http://blog.csdn.net/coofucoo/services/trackbacks/480995.aspx
[點擊此處收藏本文]