作为初学者学习指针,我写了类似
的内容int i = 1,
j = 2,
k;
k &= i;
i = 3;
期待k
指向i
但是,我很快发现错误是k
不是int
指针,只是int
。但它编译并运行原因?
答案 0 :(得分:21)
k &= i;
是
的缩写形式k = k & i;
其中&
是按位and
。它与指针无关。
如果您想让k
指向i
,则需要将其设为指针:
// v
int* k;
并将它们指向i
:
k = &i; // NOTE: different from k &= i;
答案 1 :(得分:2)
& =与k = k&一世。 &安培;是按位AND运算符。
答案 2 :(得分:2)
k &= i
相当于k = k & i
,这是一个按位和操作。