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
[6636] Re:포인터와 다차원 배열의 질문이요.
백승지 [conaman] 2212 읽음    2001-04-06 14:49
먼저 char (*p_ptr)[20]; 을 보면

연산자 우선순위가 (), [], * 이므로(아마도) 이 문장의 의미는
char*를 20개 가진 배열을 만들라는 뜻입니다. 즉 (char *)[20] 이죠~
따라서 char를 가리키는 포인터를 20개 만들게 됩니다.
그래서 p_ptr[0] = 포인터 형태로 사용하게 됩니다.

두번째로 char *p_ptr[20]; 을 보면

연산자 우선순위에 따라서 p_ptr은 *(char[20])의 형을 가지게 됩니다.
따라서 char[20]를 가진 배열 주소의 주소를 가지게 됩니다.
주소의 주소라고 하면 조금 헷갈리시겠죠?
char ptr[20]이라고 할 때 ptr은 ptr[20]의 첫번째 위치를 가리키고 있습니다.
여기서 ptr은 주소입니다. 그렇지만 char* p_ptr[20]으로 하면
앞에서 나온 주소 ptr의 주소를 가리키는 변수를 생성하게 됩니다.

따라서 이런 형태가 되겠죠?
p_ptr -----> *p_ptr ------> (*p_ptr)[0]

보통 책에서 이런 문제를 다루는 것은 연산자 우선순위를 설명하기 위해서 적습니다.
그렇지만 보통 해독을 편리하게 하기 위해서 *p_ptr[20]인 경우에도 *(p_ptr[20])
으로 적는 버릇을 들이는 것이 좋습니다.

전승호 님이 쓰신 글 :
:
: char (*p_ptr)[20];  과 char *p_ptr[20]; 의 차이점이
: 뭔지 정말 궁금해요.
: 책에서는
: char (*p_ptr)[20]; 와 char *p_ptr[20]; 두 경우가 서
: 로 다르게 쓰인다고 하는데 설명에는 거의 차이가 없더
: 군요.
: 그래도 다른점이 있다고 하니 꼭좀 알고 싶어요.
: 꼭좀 가르쳐 주세요.
:
:

+ -

관련 글 리스트
6621 포인터와 다차원 배열의 질문이요. 전승호 2047 2001/04/06
6636     Re:포인터와 다차원 배열의 질문이요. 백승지 2212 2001/04/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.