在 C++ 中声明变量如 &ref=a 和 ref=&a 的区别
Difference between declaring variables like &ref=a and ref=&a in C++
我对我遇到的两种类型有点困惑,比如 if 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
: 是引用变量,意思是它是现有变量的别名。它可以像正常 variables.Memory 一样使用,管理留给编译器的引用
*ref=&a
:它是指针变量,它保存另一个变量的地址。指针用于存储和管理动态分配的内存块的地址。
我的回答是肯定的,两者在保存变量方面应该有相同的目的,因为在大多数编译器中,引用可以被认为是常量指针本身。
我对我遇到的两种类型有点困惑,比如 if 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
: 是引用变量,意思是它是现有变量的别名。它可以像正常 variables.Memory 一样使用,管理留给编译器的引用
*ref=&a
:它是指针变量,它保存另一个变量的地址。指针用于存储和管理动态分配的内存块的地址。
我的回答是肯定的,两者在保存变量方面应该有相同的目的,因为在大多数编译器中,引用可以被认为是常量指针本身。