2012-10-17 5 views
2

을 K, 나는 그러나, 곧 실수가 kint 포인터, 단지 int되지 있다는 것을 발견, i를 가리 키도록 k을 기대실제로 int i, k가 발생합니다. 초보자 학습 포인터로 &= i;

int i = 1, 
    j = 2, 
    k; 

k &= i; 
i = 3; 

같은 것을 썼다. 그러나 그것은 왜 컴파일되고 실행됩니까?

+0

http://msdn.microsoft.com/en-us/library/5bk6ya5x(v=vs.71).aspx – Dan

+7

나는'k & = i'를'k = & i'라고 읽었을 것이라고 생각합니다. 그것들은 매우 다르며, 'i- = 1'과 'i = -1'보다 훨씬 다릅니다. – hvd

답변

21
k &= i; 

&는이 비트 and이다

k = k & i; 

대한 약칭이다. 그것은 포인터와 아무 관련이 없습니다. 당신이 i를 가리 키도록 k를 확인하려면

, 당신은 그것에게 포인터를 확인해야합니다 :

// v 
int* k; 

을하고는 i를 가리 만들 :

k = &i; // NOTE: different from k &= i; 
+1

+1 좋은 캐치 !! – Ankush

+1

+1 빠르고 더 완벽합니다. –

2

&는 =은 IS k = k와 동일 & i. &은 비트 AND 연산자입니다.

2

k &= i은 비트와 연산 인 k = k & i과 동일합니다.

관련 문제