我对遇到的两种类型的我有点困惑,就像int a = 0一样,“&ref = a”指的是什么,这东西指的“ ref =&a”是什么?
这些具有保留变量地址的相同目的吗?
查看此
int a=10;
int &ref=a;
std::cout<<ref;
它将打印10
int a=10;
int *ref=&a;
std::cout<<ref;
它将打印a的地址,如果您想输入值,则应像这样*ref
放置,即应取消引用它。
#include<iostream>
#include<fstream>
void fun(int &var)
{
var=100;
}
int main()
{
int a=10;
fun(a); //no need & here
std::cout<<a;
return 0;
}
并查看此
#include<iostream>
#include<fstream>
void fun(int *var)
{
*var=100;
}
int main()
{
int a=10;
fun(&a); //need & here
std::cout<<a;
return 0;
}
&ref=a
:它是参考变量,表示它是现有变量的另一个名称。它可以像普通变量一样使用。留给编译器的引用的内存管理
*ref=&a
:它是指针变量,它保存另一个变量的地址。指针用于存储和管理动态分配的内存块的地址。
我的答案是肯定的,两者在保存变量时都应达到相同的目的,因为在大多数编译器中,引用本身可以被视为常量指针。