繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM