我刚刚开始学习c ++(我现在更像是一个java开发人员)并且使用指针时有些困惑...例如,以下代码可以正常工作
int main() {
int x = 5;
int * y;
y = &x; //note this line of code
*y = 10;
}
而此代码不起作用
int main() {
int x = 5;
int * y;
y = x;
*y = 10;
}
有人可以向我解释为什么使用y = &x
获取值“location”有效,但只要我用y = x
替换它就会导致错误。如果有人知道关于指针的好解释,请分享链接:)
谢谢!
答案 0 :(得分:7)
让我们看一下如何使用指针。
int x = 5;
您将值5分配给x,即int。
int *y;
你正在声明一个指向int的指针。
y = &x;
现在,存储在y中的地址与x的地址相同。
但是,如果你这样做:y = x
,你将一个整数(在这种情况下为5)分配给一个包含地址整数的变量。
最后,你必须记住:
&
是地址运算符,可以读作“地址”*
是间接运算符,可以读作“由......指向的值”答案 1 :(得分:0)
y
是指向int
的指针。 x
是int
。因此,无论何时设置y=x
,您都会告诉y
每当它被取消引用时,它应该查看内存位置10
(或任何x
在分配时间)。并且10
可能没有内存分配。或者至少不是你所期待的。如果您想获取x
的位置,请使用&x
获取指向它的指针。
int main() {
int x = 5;
int * y;
y = &x; // <-- NOTE THE "&" WHICH MEANS GET REFERENCE
*y = 10;
}
答案 2 :(得分:0)
指针是保存内存位置的变量。在您的实例中,变量&#34; x&#34;保持值5,其中变量y在内存中保存一个位置。 &#34;&amp;&#34;运算符将使您能够使用&#34; x&#34;内存中的位置。变量
cout >> x; //will give you an output of 5.
cout >> &x; //will give you an output of the memory location of the variable x.
y = &x;
cout >> y; //will give you an output of the memory location of the variable x.