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

C/C++ Q/A
[4716] Re:배열과 포인터의 관계를 나타내는 소스인데 잘 이해가 가지않는 부분이 있네요....
진수.네모 [miman101] 1246 읽음    2004-10-27 00:39
머라고 설명해야 할지... 저도 끈이 짧네요.

%p 는  주소를 표기하는데 사용합니다.
%d 는 값을 표기하는데 사용합니다.

사용예를 잠깐 들어 보면...

int temp;
temp = 10;

printf("%p",&temp);
                     |
                 주소죠.

printf("%d",temp);
                    |
                아. 뭐라해야할지. 암튼 주소는 아니고 명칭...ㅠ.ㅠ

이게 맞는 거겠죠...

그럼 예를 잠깐 볼까요....
printf("zippo = %p, zippo[0] = %p, &zippo[0][0] = %p\n",zippo, zippo[0], &zippo[0][0]);
                                                                                               |          |                  |
                                                                                               |          |                주소
                                                                                               |        주소
                                                                                            주소
주소니까 %p로 받는게 맞겠죠...
따라서 %d 로 받으면 이상한 값이 나오는게 당연하겠죠.. 그렇다면 어떻게 해야 할까요...

printf("zippo = %d, zippo[0] = %d, &zippo[0][0] = %d\n",**zippo, *zippo[0], zippo[0][0]);
                                                                                                |             |                   |
                                                                                                |             |                 명칭
                                                                                                |          명칭
                                                                                             명칭

자 이렇게 됩니다.

이걸 이해하기 위해서 배열에서 주소를 나타내는 경우와 명칭이 되는 경우를 알아야 하겟죠...

예를 들어...
int temp[3];

이라고 하면...
명칭            주소
temp[0]      &temp[0],temp
temp[1]      &temp[1],temp+1
temp[2]      &temp{2],temp+2

int temp[2][2];
명칭                  주소
temp[0][0]    &temp[0][0],temp[0]    , *temp 
temp[0][1]    &temp[0][1],temp[0]+1, *temp + 1
temp[1][0]    &temp[1][0],temp[1]   ,  *temp + 2
temp[1][1]    &temp[1][1],temp[1]+1 , *temp + 3

이정도 되고... 여기서 특히 temp 는 배열 temp[2][2] 의 시작 주소를 나타냅니다.
temp 이중 포인터 라고도 하지요...

설명이 됬는지... 매우 부족할지 모르니 책에서 배열에 관한 부분을 찾아서 읽어보세요.

잘못된 점이 있다면 지적 바랍니다.

+ -

관련 글 리스트
4715 배열과 포인터의 관계를 나타내는 소스인데 잘 이해가 가지않는 부분이 있네요.... 경선 1360 2004/10/26
4716     Re:배열과 포인터의 관계를 나타내는 소스인데 잘 이해가 가지않는 부분이 있네요.... 진수.네모 1246 2004/10/27
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.