reference Vs. pointer
pointer Vs. reference
Firstly, reference is the concept of C++, it is a simple reference data type that is less powerful but safer than the pointer type.
int a=2;
int& ra=a; // define a reference ra
std::cout << ra; // 2
Reference is a sort of alias for the target. For example, ra is a sort of alias for the r in the above example. When we refer to the ra, practically refer to the a. ra and a are conceptually one. Changing ra means changing a, and changing a means changing ra.
Essentially,
referenceis same as thepointer,referenceis the grammar sugar of thepointer.
Because from the assembly code, the implementation of reference is almost same as pointer. Therefore, reference is also need to be allocated the memory.
Referenceis the grammar sugar of thepointer, it is intended as theconst pointerwhich can do the address-of operation(&) and the dereference operation(*) by the compiler.Referencemust be initialized when it is created,pointernot.Referenceis a sort of alias of the target, therefore,referencemust be non-null,pointernot.Referenceis the target value execute the increment(++) or decrement(--) operation, but thepointeris itself executes the increment or decrement operation.
Particularly, the reference can be used as the formal parameter to avoid the check of if the passed parameter is 0. For example:
void fun1(int *point)
{
// need to check whether the point is NULL
if(!point)
{
return;
}
}
void fun2(int &reference)
{
// reference is must be non-null
}
sizeof(*pointer) will get the memory space of a pointer, sizeof(&reference) will get the referenced object’s memory space.
References
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 gzrjzcx@qq.com
文章标题:reference Vs. pointer
文章字数:289
本文作者:Alex Zou
发布时间:2019-02-22, 23:44:05
最后更新:2024-07-10, 03:02:36
原始链接:https://www.hellscript.cc/2019/02/22/subposts_c/reference-Vs-pointer/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。