相关疑难解决方法(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++:何时使用引用与指针
运算符重载是否可以在没有引用的情况下工作?

我无法帮助它,但这个基本问题在我的脑海里浮现:为什么C++在你可以使用指针时也有引用?

我知道在某些情况下它们稍微安全一些,而且往往使代码更漂亮,但从技术上讲,没有区别,对吧?那么有什么情况我不能用指针和引用是必须的吗?
我想看看何时使用引用的具体例子是不可避免的.

免责声明:
我在StackOverflow上没有找到任何答案,这不是关于语法差异的问题.我想知道为什么C++语言首先引入了引用.

c++ pointers reference

26
推荐指数
2
解决办法
7445
查看次数

为什么我要使用引用变量?

作为我的第一门编程语言,我学习了Java,但是由于我改为另一所大学,我现在正在学习C++.

来自Java并学习C++的基础知识,我阅读了有关引用和引用变量的内容.它们有多危险,如何小心它们等等.

因此,在我脑海中出现了一个简单的问题:为什么我要使用那种复杂的,因此可能引起问题的东西呢?

它是不是值得,或者只是RAM大约64MB的时候的遗物?

由于很多答案都提到了指针:这个概念显然来自石器时代,imho.除了高性能计算,我甚至不会触及那些东西.

c++ pointers reference

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

当我通过引用传递一个对象并且它超出范围时,在C++中会发生什么?

我认为这个问题最好用我刚写的一个小代码片段:

#include <iostream>

using namespace std;

class BasicClass
{
public:
    BasicClass()
    {
    }
    void print()
    {
        cout << "I'm printing" << endl;
    }
};

class FriendlyClass
{
public:
    FriendlyClass(BasicClass& myFriend) :
        _myFriend(myFriend)
    {
    }
    void printFriend()
    {
        cout << "Printing my friend: ";
        _myFriend.print();
    }
private:
    BasicClass& _myFriend;
};

int main(int argv, char** argc)
{
    FriendlyClass* fc;
    {
        BasicClass bc;
        fc = new FriendlyClass(bc);
        fc->printFriend();
    }
    fc->printFriend();
    delete fc;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

代码使用g ++编译并运行良好:

$ g++ test.cc -o test
$ …
Run Code Online (Sandbox Code Playgroud)

c++

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

将可修改的参数传递给c ++函数

提供,我想将一个可修改的参数传递给一个函数,我应该选择什么:通过指针传递它还是通过引用传递它?

  1. bool GetFoo(Foo&whereToPlaceResult);
  2. bool GetFoo(Foo*whereToPlaceResult);

我问这个是因为我一直认为通过引用(1)传递参数是最好的做法,但在检查了一些本地代码数据库后,我得出结论,最常见的方法是(2).此外,该男子本人(Bjarne Stroustrup)建议使用(2).(1)和(2)的[dis]优点是什么,还是仅仅是个人品味的问题?

c++ parameters pointers reference

7
推荐指数
2
解决办法
2324
查看次数

为什么有指针参数?

可能的重复:
为什么使用指针?
将可修改的参数传递给c ++函数

为什么我想要指针参数?我能看到的唯一原因是小功能试图减少混淆和更小的内存占用.

c++ parameters pointers

5
推荐指数
1
解决办法
667
查看次数

标签 统计

c++ ×6

pointers ×5

reference ×4

parameters ×2

c++-faq ×1