|
됩니다.
왜 안되나요 혹시 누가 그렇게 가르쳤나? 이상하다 되는데 왜 모르징...크.......
다음을 보세요
int a=1;
int b=2;
int* X;
int* Y;
X = &a; Y = &b;
a^=b; b^=a; a^b; => (1)
(*X)^=*Y; (*Y)^=*X; (*X)^=*Y; => (2)
그라고 이것도 되요
X^=Y; Y^=X; X^=Y; => (2)
단지 메모리 번지가 연산의 대상이 되므로 별로 쓸모가 없는 연산임
X와Y에는 a b의 번지가 저장 되어 있음
*X = 7 은 a = 7 과 같은 표현이고
*Y = 8 은 b = 8 과 같은 표현임
*는 선언시는 포이터변수 선언을 의미하고
실행문에서는 변수에 저장된 번지로 점프를 의미합니다.
int i = 9;
int* p = &i;
만일 i가 1000번지에 할당 되었다면 p에 저장된 값은 1000이 됩니다.
*p = 555;
1000 번지로 점프한 후에 = 연산자에 의해 1000번지에 555가 저장되는 겁니다.
그럼
:진이 님이 쓰신 글 :
: 책을 보다가 비트연산으로 Swap을 구현한게 있길래
: 한번 해봤는데요.
:
: 포인터 변수는 비트연산이 안되나요?
:
: int a=1;
: int b=2;
: int* X;
: int* Y;
:
: X = &a; Y = &b;
:
: a^=b; b^=a; a^b; => (1)
: X^=Y; Y^=X; X^=Y; => (2)
:
: (1)은 되는데, (2)는 안되는 건가요?
:
: 알려주세요...
:
:
:
:
|