相关疑难解决方法(0)

C++中指针变量和引用变量之间有什么区别?

我知道引用是语法糖,因此代码更容易读写.

但有什么区别?


以下答案和链接摘要:

  1. 指针可以重新分配任意次数,而在绑定后无法重新分配引用.
  2. 指针可以指向nowhere(NULL),而引用总是指对象.
  3. 您不能使用指针来获取引用的地址.
  4. 没有"参考算术"(但您可以获取引用所指向的对象的地址,并对其进行指针运算&obj + 5).

澄清一个误解:

C++标准非常谨慎,以避免规定编译器如何实现引用,但每个C++编译器都将引用实现为指针.也就是说,声明如下:

int &ri = i;
Run Code Online (Sandbox Code Playgroud)

如果它没有完全优化,则分配与指针相同的存储量,并将地址i放入该存储中.

因此,指针和引用都使用相同数量的内存.

作为基本规则,

  • 使用函数参数和返回类型中的引用来提供有用的自我文档化接口.
  • 使用指针实现算法和数据结构.

有趣的读物:

c++ pointers reference c++-faq

3115
推荐指数
34
解决办法
94万
查看次数

指向引用的指针和指针引用之间的区别

指向引用的指针,指针的引用和C++中指针的指针有什么区别?

一个人应该优先于另一个?

c++ memory pointers reference

42
推荐指数
4
解决办法
3万
查看次数

引用是在内存中创建新位置,还是在现有单元格中创建别名?

我正在学习指针和参考,我的问题涉及这个解释,特别是以下部分:

这表明声明int& ri = i创建了一个新的内存单元格,其值为&i并存在于未知的内存位置.

为了测试这个理论,我写了一个简单的案例,结果如下所示:

在此输入图像描述

我感到困惑的是,r并且i具有相同的内存地址,这似乎与读数相矛盾.结果表明,int& ri = i松散意味着"为内存单元创建一个别名i并调用它r",这样两者都指向完全相同的单元格.

文件是否正确,或者我错过了什么?

c++ pointers reference

9
推荐指数
2
解决办法
1578
查看次数

(C++内存管理)如果我们有一个int x = 1234,而int&y = x ...那么堆栈中y的地址是多少?

我们正在为周二的CS期中考试.

我们的教授在网上提供了一些学习资料,包括:

"此外,您应该能够根据一些代码绘制内存图,例如:"

void foo( int &x )
{
 x = 1000;
}

void bar( int *x )
{
 *x = 1000;
}

void foobar( int x )
{
 x = 1000;
}

int main()
{
   int x = 1234;
   int &y = x;

   int *z = &x;

   int  array_1[5];
   int *array_2[5];

   array_1[0] = 10;
   array_2[0] = (int*)10;
   array_2[1] = &y;

   array_2[2] = &x;

   foo( x );
   foo( y );
   foo( *z );

   bar( &x );
   bar( &y );
   bar( …
Run Code Online (Sandbox Code Playgroud)

c++ heap pointers memory-management

4
推荐指数
1
解决办法
2608
查看次数

引用变量的内存地址

可能重复:
有没有办法找到参考的地址?

当我们打印实际变量和引用变量的地址时,它显示相同的地址为什么?

c++

3
推荐指数
3
解决办法
1万
查看次数

cpp中的引用如何具有相同的内存地址?

我发现以下声明.两个东西可能存在于同一地址,即实际变量和引用变量具有相同的内存地址,这怎么可能?

无论引用如何实现,引用都具有与其引用的项相同的内存地址.

c++

0
推荐指数
1
解决办法
92
查看次数

如何通过引用获取引用变量的地址?

在下面的代码片段中,当使用&引用变量时,我们得到引用变量所指向的变量的地址,但在函数调用期间,引用变量将在堆栈帧上分配,因此如何获取该地址价值?

#include <iostream>
using namespace std;
void modify(int& x)
{
    x=9;
    cout<<&x<<endl<<x<<endl;
}
int main() {

    int a=8;
    modify(a);
cout<<&a<<endl<<a;  
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这里&x和&a都打印相同的值,这是变量a的地址,那么有什么方法可以得到参考变量x的地址?

c++

-1
推荐指数
1
解决办法
245
查看次数

标签 统计

c++ ×7

pointers ×4

reference ×3

c++-faq ×1

heap ×1

memory ×1

memory-management ×1