实际发生在i,k; k&= i;

Jie*_*eng 2 c++

作为初学者学习指针,我写了类似的东西

int i = 1,
    j = 2,
    k;

k &= i;
i = 3;
Run Code Online (Sandbox Code Playgroud)

然而,期待k指出i,我很快发现错误是指针k不是int指针,只是一个指针int.但它编译并运行原因?

Kir*_*rov 21

k &= i;
Run Code Online (Sandbox Code Playgroud)

是简短形式

k = k & i;
Run Code Online (Sandbox Code Playgroud)

在哪里&是按位的and.它与指针无关.

如果你想k指向i,你需要使它成为一个指针:

// v
int* k;
Run Code Online (Sandbox Code Playgroud)

他们指出i:

k = &i; // NOTE: different from k &= i;
Run Code Online (Sandbox Code Playgroud)