您的位置:首页 > 编程语言 > C语言/C++

C++的引用和指针的区别(&和*)

2018-03-18 11:31 344 查看
这里,做个总结。

资料来源:https://www.zhihu.com/question/37608201

More Effective C++

先来说一下指针的特点:

1.指针的本意是可以指向一块地址空间,这就意味着指针可以指向未初始化的内存空间。

2.这里我们来了解一下const在指针上的用法,我们这里要理解两个const,指向常量的指针以及常量指针,指向常量的指针说明我们不能通过这个指针去修改这个常量。之后,我们再讨论一下常量指针,常量指针的意思就是我们只能指向一块特定的内存,但是不能改变。

3.在没有指定该指针为常量指针的时候,我们可以随意改变该指针指向的内存。

知道了指针的这些特点,我们就可以很快的理解引用有哪些不同。

引用的意思更像是一个对象的别名,是指代这个对象的一个名字。

1.既然是一个别名,那自然是无法给一个未初始化的对象起别名的啦,这就带来一个好处,在我们在使用引用的时候。不用判断这个引用是否初始化(指针必须判断),省下了一个功夫。

看下知乎上的一个例子:

void fun1(int *point)

{

// 为了代码的稳健和安全,我们需要判断指针是否有效,通常做法是判断指针是否为

// 空,其他的判断就需要根据函数的具体功能来判断了

if(!point)

{

return;

}

// 函数实现

}

void fun2(int &refence)

{

// 在这里,我们就不用担心refence是否为空

}

作者:牛开放

链接:https://www.zhihu.com/question/37608201/answer/90293843

来源:知乎

2.引用类似于一个常量指针,当指定了一个对象的引用,就不能把这个引用改变成其他对象的引用了。具体还是看下知乎上的例子:

int xiaoming = 1;

int &refence_mingming = xiaoming;

int xiaoan = 2;

refence_mingming = xiaoan; // error,引用不能换了

这里提一句哈,引用的内部也是借助指针来实现的,但是应该在外面还包裹了其他信息。所以,引用的占用内存应该是会比指针大的,但是肯定是比把整个对象当做参数的代价要低。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: