我在以下几个方面定义了两个变量:差异声明一个变量
void main()
{
int a = 20;
int &b = a;
cout<<a<<" "<<b;
}
输出:20 20
请告知到底发生了什么,当我写INT & B = A和它是如何不同从第一次宣言开始,也是何时使用哪个。
我在以下几个方面定义了两个变量:差异声明一个变量
void main()
{
int a = 20;
int &b = a;
cout<<a<<" "<<b;
}
输出:20 20
请告知到底发生了什么,当我写INT & B = A和它是如何不同从第一次宣言开始,也是何时使用哪个。
Int a = 0;
这为int的简单变量,它可以仅存储-32768至32768(2个字节)
Int * b;
这也可变,则*表示该vatiable可以存储一些另一个变量的地址没有价值。
b=&a;
现在这个怎么你把价值指针,写&前一个变量名会给你的变量,而不是变量值的一个地址。
*b;
这如何从一个指针获取值,这会给你的
“-32768至32768(2字节)”不正确。 int的大小由编译器inmplementer设置。 “int”的最小大小是16位(2字节)。较高的大小是无界的,但没有多少实现超过64位(8字节)。以下是关于数据类型大小和范围的页面:http://en.cppreference.com/w/cpp/language/types – user4581301
此答案的其余部分讨论指针。这个问题并没有问关于指针。这是询问有关参考。 – user4581301
那么有多少数字可以放在8个字节? –
在第一可变要分配值给变量A(A = 20) 在创建第二行的值一个变量并给出该变量的地址。 现在b也指出了a的地址。现在,A和B都指向同一个内存ADRESS这是20
处理参考文献时指针可能涉及或可能不涉及。编译器完全有权在同一个内存位置简单地使用两个名称。 – user4581301
但是指针是我们可以存储地址的唯一东西。 –
And&b = a意味着b的地址等于a。意思是现在b也指向一个 –
请告知当我写INT & B = A到底发生了什么,以及如何从第一次申报
在它不同下面的例子:
int a;
int & b = a;
b
的变量是指a
变量的存储器地址。变量b
只是a
的别名。
还有什么时候用哪个。
引用的常见用法是避免复制大对象。不是传递(复制)大对象,而是传递对它的引用。
const std::string& Get_Tree_Name()
{
static std::string name = "Eucalyptus";
return name;
}
上述函数返回一个参考到函数内的静态字符串。因此,不是在函数退出后复制字符串,而是传递引用。一般来说,引用占用的空间比std::string
对象要少。
另一个用途是,当一个函数修改其参数:
void Get_Pi(double& pi_value)
{
pi_value = 3.14159264;
}
int main()
{
double my_pi = 0.0;
Get_Pi(my_pi);
}
在上述例子中的main
功能,在Get_Pi
功能的代码被实际修改由于在main
功能的my_pi
变量,参考机制。
没有引用的Get_Pi
功能将修改的副本my_pi
变量,而不是原来的变量,因为参数是通过复制传递。
指针与引用
另一种替代方法为修改其参数的函数是通过指针传递参数。使用指针的一个问题是指针可能指向任何东西而不一定是变量。
传递引用意味着对象必须存在。与指针不同,引用不需要在运行时进行验证。编译器执行检查。这在安全关键系统中很重要。
你试过编译这个吗?如果你这样做了,并且编译了它,你的编译器就坏掉了。 –
听起来像你可以使用[良好的C++书](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) – NathanOliver
和现代编译器。 – LogicStuff