[英]What is the meaning of a function parameter of type *& in C++?
阅读了有关在Stackoverflow上交换指针地址的描述之后,我对C ++语法有疑问。
如果您的函数具有以下签名:
void swap(int*& a, int*& b)
int *&是什么意思? 那是指向整数的指针的地址吗? 而且,由于它是一个指针引用,为什么不要求它们按以下方式初始化?
void swap(int*& a, int*& b) : a(a), b(b) {}
这是参考问题/答案发布(答案是您感兴趣的地方): 在c中交换指针的地址
对int指针的引用。 该函数的调用方式如下:
int* a=...; //points to address FOO
int* b=...; //points to address BAR
swap(a,b);
//a now points to address BAR
//b now points to address FOO
它是对int指针的引用。
您可能会发现这很有用: c ++中的指针变量和引用变量之间的区别
演示如何使用指针引用的示例:
int items[] = {42, 43};
int* a = &items[0];
int* b = &items[1];
swap(a, b);
// a == &items[1], b == &items[0]
// items in the array stay unchanged
因为这里的swap
是一个函数,而不是一个类。 您的第二个代码段不是有效的C ++语法(您正在尝试将函数声明与类构造函数混合使用。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.