C++函数中传进去一个指针实参,怎么样使这个指针在函数结束后发生了改变?(注,函数的返回类型是其他)
int find_replace_str(char str[],const char find_str[],const char replace_str[])
{
//别的操作
char *newStr=new char[newLength+1];
//对newStr的操作
str = newStr;
return count;
}
int main()
{
char *str="abceeeabceeeeabceeeeabceeeeeabc";
const char *find_str="abc";
const char *replace_str="ABCD";
cout<<find_replace_str(str,find_str,replace_str)<<" "<<str<<endl;
cin.get();
return 0;
}
main函数中的str还是之前的str,请教大神如何解决
我知道传递引用或者二级指针可以,但是这是南京大学复试的题目,函数名就是这么写的。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
程序中有两处问题:
所以,可以通过参数
str
将main
中分配的数组传递到函数find_replace_str
中,而函数find_replace_str
再对这个数组进行修改替换,从而影响到main
中分配的数组的内容。另外,
(2)
处将一个常量字符串赋值给非常量指针是错误的,一个常量字符串只能赋值给常量指针或字符数组。否则的话,就有可能通过非常量指针修改字符串。函数名字的意思很明显,针对字符数组操作,替换掉需要替换的子串
main函数是你写的吧,这样用是不对的,字符串是const char *,不能改变的,你需要声明数组
这样子,在find_replace_str里面