我混淆了引用运算符和引用,解引用运算符和指针

时间:2018-05-03 08:01:11

标签: reference

据我所知,&被称为“参考运算符”,意思是“地址”。因此,它的作用是将地址存储在任何变量中。例如,'a =& b;'。但我知道另一个意思是'参考'。如您所知,引用是变量的别名。所以,在我的结果中,&根据位置有两个含义。如果'a =& b;',&表示'b'的地址。如果'int& a = b;',&意思是“另一个变量的别名”。

据我所知,*被称为'解除引用运算符'。但它就像&,它根据位置有两个含义。如果'int * a =& b',*表示'指针变量'。如果'a = * b',*表示'取消引用变量'。

他们是对的????

P.S。我是foriegner。所以我的英语很差。对不起......我的英语很差。

1 个答案:

答案 0 :(得分:0)

您好我明白您对指针和参考的概念感到困惑。让我试着为你分解一下:

当我们在变量声明中使用其中任何一个时,请将其视为指定该变量的数据类型。

例如, int *a;创建一个指针变量'a',它可以保存(换句话说,指向)另一个整数变量的地址。

类似地int & a = b;创建一个引用变量'a',它引用b(换句话说'a'只是整数b的别名)。

现在它看起来可能相同,事实上它们都提供相似的功能,但这里有一些差异:

指针有为其分配的内存,用于保存它指向的另一个变量的地址,而引用实际上并不存储它们引用的变量的地址。

另一个区别是指针在声明时不需要初始化,但是在声明时必须初始化引用,否则会引发错误。即; int * a;可以,而int & a;会抛出错误。

现在对于运算符,尝试看看它们与指针或引用没有关联(尽管我们最常使用它们)。

引用运算符(&)只返回其操作数变量的地址。而解除引用运算符(*)只是假设其参数的值是一个地址,并返回存储在该地址的值。

希望这对你有所帮助。这里有一些有用的参考资料(没有双关语):

https://www.ntu.edu.sg/home/ehchua/programming/cpp/cp4_PointerReference.html

How does a C++ reference look, memory-wise?