读书人

怎么能够让函数返回字符串指针

发布时间: 2012-02-10 21:27:41 作者: rapoo

如何能够让函数返回字符串指针?
我写一个函数,这个函数需要使用new来动态分配内存空间,然后将字符串拷贝到这个空间上,再返回。

例如:

C/C++ code
char *p = NULL;myfunction(p);void myfunction( char *p ){    p = new char[1000];    strcpy( p, "...." );}


不过我发现函数返回之后指针就失效了,我不明白,new不是在堆上分配空间的吗?为何函数返回之后也失效了?

[解决办法]
C/C++ code
char *p = NULL;myfunction(p);void myfunction( char *&p ) //去引用这个指针,否则只是把分配的空间的首地址给了一个临时变量{    p = new char[1000];    strcpy( p, "...." );}
[解决办法]
因为p是行参 调用函数时是在作用域内复制这个指针
解决方法:
1.定义引用形参
void myfunction( char *&p ) //这样函数就不会复制形参,而是直接调用形参
{
p = new char[1000];
strcpy( p, "...." );
}
2.返回形参
char *p = NULL;
p = myfunction(p);

char* myfunction( char *p )
{
p = new char[1000];
strcpy( p, "...." );
return p;
}
//这样的话 形参传入和return都有复制的过程 建议还是用第一种方法

读书人网 >C++

热点推荐