C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[35472] Re:포인터는 비트연산이 안되나요?
김상면 [windyboy] 1929 읽음    2004-06-08 13:44
됩니다.
왜 안되나요  혹시 누가 그렇게 가르쳤나? 이상하다 되는데 왜 모르징...크.......
다음을 보세요

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)는 안되는 건가요?
:
: 알려주세요...
:
:
:
:

+ -

관련 글 리스트
35468 포인터는 비트연산이 안되나요? 선진이 1057 2004/06/08
35472     Re:포인터는 비트연산이 안되나요? 김상면 1929 2004/06/08
35477         Illegal use of pointer라고 에러 나는데... 선진이 1031 2004/06/08
35493             Re:Illegal use of pointer라고 에러 나는데... 김상면 1014 2004/06/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.