对指针感到困惑

dux*_*x-- 0 c++ pointers

我刚刚开始学习c ++(我现在更像是一个java开发人员)并且使用指针时有些困惑...例如,以下代码可以正常工作

int main() {
    int x = 5;
    int * y;
    y = &x; //note this line of code
    *y = 10;
}
Run Code Online (Sandbox Code Playgroud)

而这段代码不起作用

int main() {
     int x = 5;
     int * y;
     y = x;
     *y = 10;
}
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释为什么使用y = &x作品获取值"位置" 但是一旦我用它替换它y = x就会导致错误.如果有人知道对指针的一个很好的解释请分享链接:)

谢谢!

Gab*_* L. 7

让我们看一下如何使用指针.

int x = 5;
Run Code Online (Sandbox Code Playgroud)

您将值5分配给x,即int.

int *y;
Run Code Online (Sandbox Code Playgroud)

你正在声明一个指向int的指针.

y = &x;
Run Code Online (Sandbox Code Playgroud)

现在,存储在y中的地址与x的地址相同.

但是,如果你这样做:y = x,你将一个整数(在这种情况下为5)分配给一个包含整数地址的变量.

最后,你必须记住:

  • & 是运算符的地址,可以读作"地址"
  • * 是间接运算符,可以读作"指向的值"

关于指针的教程

  • "现在,y的地址与x的地址相同." - 你使用"y`"的地址来表示存储在`y`中的地址.相当混乱. (2认同)