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

C/C++ Q/A
[6856] Re:Re:Re:포인터 질문 좀 드릴게요~
주누 [junesaku] 46603 읽음    2013-12-11 17:05
포인터 변수의 값은 32비트일땐 메모리 주소가 32비트라서 4바이트 크기를 가지는 것이기에
64비트로 가면 8바이트를 사용합니다.

포인터 변수에 붙는 더하기 기호는 단순히 값을 더하는 것이 아니기에 4바이트씩 더해지는 것이 아니라 포인터 변수 타입에 의해서 달라집니다.

+n일경우 (n*sizeof(포인터가 가리키는 타입))만큼 값이 더해지죠

struct st_str(
  char str[512];
};

st_str *p = NULL; // p=0, c에서 널은 보통 0임으로
p = p+1; // p+1은 p + sizeof(st_str)한 값이 됨으로
을 하게 되면
p의 값은 512가 됩니다.

포인터 변수의 값은 printf("%d", p)뭐 이렇게 해서 직접 나타나게 할수 있습니다. 직접 해보세요.

붕붕이 님이 쓰신 글 :
: 그러면 포인트는 현재 항상 4바이트의 크기를 같는다는게 어떤 자료형태이든 그 포인트 변수주소값 크기는 4바이트 할당되는게 아닌가요?
: p+1은 그 포인트 변수에 4바이트를 건너뛰는거아니가요.? 좀 핵갈리네요 . . .
: 주누 님이 쓰신 글 :
: : 포인터 변수 p를 가정할때 p+1은
: : 포인터 변수 p의 타입 (char*, int*)에 따라서 계산 결과가 달라집니다.
: : int *pi;
: : char *pc;
: : 에서 pi+1은 pi의 주소값에 int의 바이트 크기(4)만큼 이동되고
: : pc+1은 pc의 주소값에 char의 바이트크기(1)만큼 이동됩니다.
: : 포인터변수에 +연산은 위처럼 포인터 변수의 타입에 따라서 하는 행동이 달라집니다.
: :
: : *연산자는 뒤의 변수에 저장된 값(메모리주소)으로 메모리에 찾아가 해당 메모리에 저장되어 있는 값을 반환 하는 연산자 입니다.
: :
: : 또는 포인터 변수 생성시나 곱하기로도 사용되지요.
: :
: : 붕붕이 님이 쓰신 글 :
: : : 안녕하세요
: : :
: : : 포인터와 1차 배열 중 포인트는 현재 4바이트 할당인데
: : :
: : : 포인터 변수 p를 가정하고
: : :
: : : p+1은 p가 저장하고있는 주소값에서 4바이트가 이동되는지..
: : :
: : : 아니면 p가 저장하고있는 주소의 변수 자료형 만큼 이동되는지 의문이 들어서요..
: : : ex)
: : : char * p;
: : : char a;
: : : p=a;
: : : 이경우도 포인터 변수는 4byte만큼 할당대자나요
: : :
: : : 근대 (p+1)일때와 *(p+1)일때 차이점좀 알려주실수있을까요?
: : :
: : :

+ -

관련 글 리스트
6853 포인터 질문 좀 드릴게요~ 붕붕이 14456 2013/12/11
6854     Re:포인터 질문 좀 드릴게요~ 주누 8633 2013/12/11
6855         Re:Re:포인터 질문 좀 드릴게요~ 붕붕이 39615 2013/12/11
6856             Re:Re:Re:포인터 질문 좀 드릴게요~ 주누 46603 2013/12/11
6857                 감사합니다~ 붕붕이 6503 2013/12/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.