微信名字怎么弄空白:[收藏]C++ Tips(8)--指针参数 - 心如止水--coofucoo的专栏

来源:百度文库 编辑:中财网 时间:2024/04/30 10:25:06
[收藏]C++ Tips(8)--指针参数

/*这一系列文章《C++ Tips》是公司Code Committee专家会推荐工程师看的,感觉很好,拿出来与大家共同提高。并不是知道多少会使人与人产生差别,真正的差别在于你能做到多少。

--coofucoo*/ 

函数的传值和传指针
向函数传参数时,一般而言,传入非const的指针时,就表示,在函数中要修改这个指针把指内存中的数据。如果是传值,那么无论在函数内部怎么修改这个值,也影响不到传过来的值,因为传值是只内存拷贝。让我们看看下面的这个例程:
void GetVersion(char* pStr)
{
   pStr = malloc(10);
   strcpy ( pStr, "2.0" );
}
void main()
{
   char* ver = NULL;
   GetVersion ( ver );
   ...
   ...
   free ( ver );
}

类似这样的问题是一个新手最容易犯的错误。程序中妄图通过函数GetVersion给指针ver分配空间,但这种方法根本没有什么作用,原因就是――这是传值,不是传指针。你或许会和我争论,我分明传的时指针啊?再仔细看看,其实,你传的是指针其实是在传值。

函数的传值和传指针
向函数传参数时,一般而言,传入非const的指针时,就表示,在函数中要修改这个指针把指内存中的数据。如果是传值,那么无论在函数内部怎么修改这个值,也影响不到传过来的值,因为传值是只内存拷贝。让我们看看下面的这个例程:
void GetVersion(char* pStr)
{
   pStr = malloc(10);
   strcpy ( pStr, "2.0" );
}
void main()
{
   char* ver = NULL;
   GetVersion ( ver );
   ...
   ...
   free ( ver );
}

类似这样的问题是一个新手最容易犯的错误。程序中妄图通过函数GetVersion给指针ver分配空间,但这种方法根本没有什么作用,原因就是――这是传值,不是传指针。你或许会和我争论,我分明传的时指针啊?再仔细看看,其实,你传的是指针其实是在传值。



本文引用通告地址: http://blog.csdn.net/coofucoo/services/trackbacks/480995.aspx
[点击此处收藏本文] 发表于 2005年09月14日 11:35 PM