如何能够让函数返回字符串指针?
我写一个函数,这个函数需要使用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都有复制的过程 建议还是用第一种方法