*&类型的函数参数的含义是什么?在C ++中?

时间:2010-02-25 03:25:15

标签: c++ syntax pointers

在阅读有关在Stackoverflow上交换指针地址的描述之后,我对引用的C ++语法有疑问。

如果您的功能具有以下签名:

void swap(int*& a, int*& b)

int *&的含义是什么? ?那是指向整数的指针的地址吗?此外,它是一个指针引用,为什么它们不需要初始化如下?

void swap(int*& a, int*& b) : a(a), b(b) {}

这是参考问题/答案发布(答案是兴趣点): Swapping addresses of pointers in c

4 个答案:

答案 0 :(得分:3)

对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

答案 1 :(得分:1)

它是对int指针的引用。

您可能会发现这有用:Difference between pointer variable and reference variable in c++

答案 2 :(得分:1)

演示如何使用指针引用的示例:

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

答案 3 :(得分:1)

因为swap这里是一个函数,而不是一个类。你的第二个代码片段不是有效的C ++语法(你试图将函数声明与类构造函数混合。)