/*這一系列文章《C++ Tips》是公司Code Committee專家會推薦工程師看的,感覺很好,拿出來與大家共同提高。并不是知道多少會使人與人產生差別,真正的差別在于你能做到多少。
--coofucoo
*/
函數(shù)的傳值和傳指針
向函數(shù)傳參數(shù)時,一般而言,傳入非const的指針時,就表示,在函數(shù)中要修改這個指針把指內存中的數(shù)據(jù)。如果是傳值,那么無論在函數(shù)內部怎么修改這個值,也影響不到傳過來的值,因為傳值是只內存拷貝。讓我們看看下面的這個例程:
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ù)傳參數(shù)時,一般而言,傳入非const的指針時,就表示,在函數(shù)中要修改這個指針把指內存中的數(shù)據(jù)。如果是傳值,那么無論在函數(shù)內部怎么修改這個值,也影響不到傳過來的值,因為傳值是只內存拷貝。讓我們看看下面的這個例程:
void GetVersion(char* pStr)
{
pStr = malloc(10);
strcpy ( pStr, "2.0" );
}
void main()
{
char* ver = NULL;
GetVersion ( ver );
...
...
free ( ver );
}
向函數(shù)傳參數(shù)時,一般而言,傳入非const的指針時,就表示,在函數(shù)中要修改這個指針把指內存中的數(shù)據(jù)。如果是傳值,那么無論在函數(shù)內部怎么修改這個值,也影響不到傳過來的值,因為傳值是只內存拷貝。讓我們看看下面的這個例程:
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
[點擊此處收藏本文]
發(fā)表于 2005年09月14日 11:35 PM