在c++中使用引用和指针的意义是什么?

What is the point of using references and pointers in C++?

本文关键字:是什么 指针 c++ 引用      更新时间:2023-10-16

我读过类似的问题,但在学习了几周c++之后,我很好奇的一件事是:为什么在c++中使用指针或引用?

甚至不是为什么使用其中一个而不是另一个,而是为什么不使用原始值?

默认情况下,在c++中东西是按值传递的,如果总是传递原始值,那么不会消除很多混乱和意外的副作用吗?

仅仅是为了在堆栈上传递一个更小的值吗?

原因很多。一般来说,使用它是因为性能。

复制对象消耗内存、CPU和时间。如果你复制了你作为参数传递给函数的每一个对象,即使这个对象不需要因为任何特殊的原因而被复制,你的应用程序的性能也会很差。

传递每个非基本类型的参数是有意义的,读取struct s和class es,作为引用或指针,除非你有很好的理由不这样做。

你可能还想传递一个对象或变量给一个函数,然后在它的原始位置修改它。如果你传递这个变量的副本,函数不会修改它,它只会修改它的一个临时的,易变的副本。你必须传递这个变量或对象作为引用或指针,这样函数才有办法修改它。

如果你想使用原始结构或值,唯一的选择就是使用引用或指针;例如

void pass_by_value(int x)
{
    // x is a *copy* of whatever gets passed in, not the original
}
void pass_by_reference(int &x)
{
    // x refers what got passed in, not a copy of what got passed in
}
相关文章: