繁体   English   中英

C++ 中的 int *(&) 声明是什么

[英]What is int *(&) declaration in C++

我遇到了这段代码

int a = 10;    ---> i)
int *p = &a;   ---> ii)
int *(&q) = p; ---> iii)

在语句iii)中, q看起来像是一个与p具有相同值的指针(解析后)( reason )。 但是,当我们仍在定义时, &q尝试获取尚未创建的 q 的地址。 那么,您如何用指针术语从逻辑上解释这一点? 也感谢任何解释这一点的资源。

注意:我确实编译并运行了代码q指向a

也许你对括号感到困惑,让我们删除它们:

int *& q = p;

也许您对*&的组合形成对指针的引用感到困惑,所以让我们尝试一些混淆:

using T = int*;  // T is alias for pointer to int
T& q = p;

T& q = p; q声明为对T的引用,并使用p初始化该引用。

请注意,C 没有引用,因为 C++ 有引用。

int *(&q)声明对指针的引用。 括号没有任何作用,也可以写成int *&q 这是创建指针名称别名的一种毫无意义(双关语意)的方式。 几乎一样的东西

int a;
int& ref = a;

但是*&创建了对指针本身的引用,而不是指向它指向的数据的引用。

通常不会在同一上下文中混合引用和指针,或者至少我不能为此想出一个合理的用例,但它是有效的语法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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