Difference in declaring a variable
我以以下方式声明了两个变量:
1 2 3 4 5 6 | void main() { int a = 20; int &b = a; cout<<a<<""<<b; } |
产量:20 20
请告知当我写int&b=a时会发生什么,它与第一个声明有什么不同,以及何时使用哪个声明。
Kindly advise what exactly happens when i write int &b = a and how is it different from the first declaration
在下面的示例中:
1 2 | int a; int & b = a; |
and also when to use which.
引用的一个常见用法是避免复制大型对象。与其传递(复制)大对象,不如传递对它的引用。
1 2 3 4 5 | const std::string& Get_Tree_Name() { static std::string name ="Eucalyptus"; return name; } |
上面的函数返回对函数内部静态字符串的引用。因此,它不是在函数退出后复制字符串,而是传递一个引用。一般来说,一个引用所占空间比
另一种用法是当函数修改其参数时:
1 2 3 4 5 6 7 8 9 10 | void Get_Pi(double& pi_value) { pi_value = 3.14159264; } int main() { double my_pi = 0.0; Get_Pi(my_pi); } |
在上述示例的
如果没有引用,
指针与引用
函数修改其参数的另一种选择是通过指针传递参数。使用指针的一个问题是指针可以指向任何东西,不一定是变量。
传递引用意味着对象必须存在。与指针不同,引用不需要在运行时进行验证。编译器执行检查。这在安全关键系统中很重要。
1 | Int a = 0; |
这是一个简单的int变量,只能存储-32768到32768(2字节)
1 | Int * b; |
这也是一个变量,*意味着这个变量可以存储另一个变量的地址,而不是值。
1 | b=&a; |
现在,您如何将值放入指针中,在变量名之前写入&;将为您提供变量的地址,而不是变量值。
1 | *b; |
这如何从指针中获取值,这将给您一个值
在第一个变量中,为变量A赋值(A=20)在第二行中,您创建一个变量,并给出该变量的地址。现在b也指向a的地址。现在a和b指向的是相同的内存地址,即20。