且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

在C ++中传递对指针的引用

更新时间:2023-11-08 23:23:52

您的函数期望引用调用范围中的实际字符串指针,而不是匿名字符串指针。因此:

Your function expects a reference to an actual string pointer in the calling scope, not an anonymous string pointer. Thus:

string s;
string* _s = &s;
myfunc(_s);

应该编译正常。

,这只有在您打算修改传递给函数的指针时才有用。如果你打算修改字符串本身,你应该使用Sake建议的字符串引用。考虑到这一点,它应该更明显为什么编译器抱怨你的原始代码。在你的代码中,指针是在飞行中创建的,修改该指针将没有后果,这不是预期的。引用(与指针)的想法是引用总是指向一个实际的对象。

However, this is only useful if you intend to modify the pointer you pass to the function. If you intend to modify the string itself you should use a reference to the string as Sake suggested. With that in mind it should be more obvious why the compiler complains about you original code. In your code the pointer is created 'on the fly', modifying that pointer would have no consequence and that is not what is intended. The idea of a reference (vs. a pointer) is that a reference always points to an actual object.