2010-02-25 106 views
2

在阅读了关于在Stackoverflow上交换指针地址的描述之后,我有一个关于C++语法参考的问题。C++类型的函数参数的含义是什么?

如果你有以下签名的函数:

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

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

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

这里的基准问题/答案发布(答案是兴趣点): Swapping addresses of pointers in c

+0

谢谢!所有的答案都很有帮助。 – CJJ 2010-02-25 03:34:19

回答

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

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

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 
1

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

+0

好的。我没有注意到第二段代码中的构造函数。 – 2010-03-03 16:47:00

相关问题