指向 C++ 中的引用的指针

Posted

技术标签:

【中文标题】指向 C++ 中的引用的指针【英文标题】:the pointer to a reference in c++ 【发布时间】:2012-02-13 09:24:03 【问题描述】:

我看到了一些 c++ 的代码,这让我有点困惑:

class Myspa ;

vector<Myspa> myspa;

Myspa * myspa_p;

myspa_p = &myspa.at(0);

vector.at()函数会返回一个元素的引用,myspa_p是一个指针,那么myspa_p = &amp;myspa.at(0)是什么意思呢?

【问题讨论】:

【参考方案1】:

vector.at()函数会返回一个元素的引用,myspa_p是一个指针,那么myspa_p = &myspa.at(0)是什么意思呢?

当您返回引用时,不要将引用视为指针可以指向的不同类型/数据对象 - 只有指针 myspa_p 和向量 myspa,没有神秘的第三个“事物”。相反,将引用视为一种在原地授予对对象(此处为 myspa 的第一个元素)的访问权限的方法,而无需将其复制到任何地方。

因此,myspa.at(0) 授予对 myspa 向量内初始 Myspa 对象的直接访问权限。然后,添加一个前导 &amp; - 形成 &amp;myspa.at(0) - 只需询问该初始对象的地址 - 因此该地址可以存储在指针 myspa_p 中。

【讨论】:

【参考方案2】:

此代码编译.. 变量 myspa_p 指向向量 myspa 的第一个元素。

myspa_p 包含向量的第一个元素的左值!!

【讨论】:

以上是关于指向 C++ 中的引用的指针的主要内容,如果未能解决你的问题,请参考以下文章

[转载]C++中引用与指针的区别(详细介绍)

[Js-c++]c++中的指针引用和数组名

解引用指针并存储对指向数据的引用,然后获取引用地址并对其执行指针运算。 C++

关于C++基类、派生类的引用和指针

C++笔记--指针和引用

C++,成员函数返回对包含指向 const 对象的指针的向量的 const 引用