C++ 指针以及引用

参考资料:
https://www.zhihu.com/question/37608201 c++中,引用和指针的区别是什么?

指针:保存的是指向一个对象的内存的地址,通过这个地址,我们可以寻址到这块内存;因此,指针本身也是一个对象,占用内存。
引用:是一个变量的别名,本身不占用内存。

引用在C++底层的实现上用的是指针。但是指针可以指向空(null) ,而引用不能为空,必须在定义的时候就初始化,

根据以上可知指针和引用的一个重要不同:指针可以为空,引用不能为空。
这就意味着我们拿到一个引用的时候,是不需要判断引用是否为空的,而拿到一个指针的时候,我们则需要判断它是否为空。这点经常在判断函数参数是否有效的时候使用。例如:

void fun1(int *point)
{
     // 为了代码的稳健和安全,我们需要判断指针是否有效,通常做法是判断指针是否为
     // 空,其他的判断就需要根据函数的具体功能来判断了
     if(!point)
     {
        return;
     }
     // 函数实现
}

void fun2(int &refence)
{
     // 在这里,我们就不用担心refence是否为空
}

引用修饰函数参数还可以提高效率,例子如下:

Class Object
{// 实现省略,只需要知道我们在这里声明了一个类,在下面我们要将这个类的对象作为
 // 函数参数类型来使用};
void fun1(Object obj)
{
     // 此函数声明中,obj是值传递,会产生一个临时对象
}
void fun2(Object &obj)
{
    // 我们不用检查obj是否为空,同时,使用引用传递,可以避免临时对象
}

作者:知乎用户
链接:https://www.zhihu.com/question/37608201/answer/90293843
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

猜你喜欢

转载自blog.csdn.net/MachineRandy/article/details/80411580