指向引用参数的指针
Pointer to a reference parameter
可能的重复项:
函数参数类型后跟 *&
我现在正在查看别人的代码,并看到了一个不寻常的(至少对我来说)函数声明语法。以下C++语法是否有效?
bool Foo::Bar(Frame *&ptoframe, int msToBlock)
{
....
}
我认为开发人员正在尝试声明指向引用的指针。
感谢您的帮助
是的,它是有效的。从右到左阅读语法:它是对指针的读取引用。如果您希望更改传递给函数的指针,这一点很重要。指针通过引用有效地传递,就像任何其他参数一样。
这里有一个很好的例子:
void no_change(int * ptr) {
ptr = 0;
}
void change_ptr(int *& ptr) {
ptr = 0;
}
int main() {
int *x;
change_ptr(x);
}
传递给change_ptr
的任何指针的值都将更改,因为我们是通过引用传递它的。
但请注意,指针指向的对象的值仍可以通过no_change
函数(即 *ptr = new int
)进行更改。此语法仅适用于实际指针,不适用于其指向的对象。
不,第一个函数参数是对指针的引用。有时你想改变别人的指针...即:
void change_my_char(char & c) { c = 'x'; }
void pimp_my_pointer(void * & p) { p = nullptr; }
int main() {
char x;
void * y;
change_my_char(x);
pimp_my_pointer(y);
}
它是通过引用传递的指针。这允许被调用方更改调用方指针的值。
相关文章:
- 为函数定义符号不明确的指针参数
- 构造函数 (C++) 中的 char 指针参数存在问题
- 按引用调用与按指针参数调用的差异 前递增和后递增
- 为什么具有指针参数的成员函数需要指向指针的指针?
- 通过引用函数传递指针参数是什么意思?
- 从double到double*的指针参数
- void 函数中的指针参数返回不一致的值
- 无法向上转换指针到指针参数
- 将数组动态分配到具有指针参数的函数中
- 模板函数指针参数与构造函数参数
- 使用通用函数指针参数化函数模板的简洁方法
- 如何为C++字符串分配空指针参数?
- C++带有指针参数的函数
- 指针参数的默认值
- 将常量添加到函数模板指针参数
- 如何传递unique_ptr<T>代替原始*输出*指针参数?
- 不带星号的函数指针参数
- 功能指针参数参数转换为const
- 将指针参数传递给双指针参数
- 如何调试指针参数是否通过函数修改