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

C/C++ Q/A
[1532] Re:[질문] 포인터 printf 쪽만... T.T
laSuna [fly2sky] 1456 읽음    2002-11-12 13:51
#include<stdio.h> 

char *ptrc[]={"KOREA","CANADA","UNITED STATES OF AMERICA","FRANCE"}; 
char **st[]={ptrc+3,ptrc+2,ptrc+1,ptrc}; 
char ***stt=st; 

void main() 

    printf("%s\n",**++stt); 
    printf("%s\n",*--*++stt+2); 
    printf("%s\n",*stt[-2]+3); 
    printf("%s\n",stt[-1][-2]+1); 


위에꺼 돌려보면 

united states of america  
rea 
nce 
orea 

-- 아마도 리포트인가봐요?
저두 학교 다닐 때 비슷한 문제로 골머리 썩은 적이 있는데... 나쁜 조교형들...
연구는 안허구 맨날 이상한거만 생각한다 했더니 요즘도 이런 분들이 있네용....

말씀드리기 전에 님의 프로그램은 컴파일러에 따라 결과가 다르게 나올 수도 있습니다.
포인터와 연산자를 어떻게 처리하느냐의 문제이니까요
그리고 제가 생각하기에는 배열과 포인터의 문제라서 복잡해보이는데
우선 연산자는 오른쪽에서 왼쪽으로 읽어가시면 되구요 배열은 포인터로 변환해보시면
답이 나올것 같습니다.

**++stt : **(stt + 1) -> **(st + 1) -> *(ptrc+2) -> united states of america
*--*++stt+2 : *(--*(++(st + 1))) + 2 -> *(--*(ptrc+1)) + 2
               -> *(--("canada")) + 2 -> *("korea") + 2 -> rea
*stt[-2]+3 : **(stt - 2) + 3 -> *(ptrc + 3) + 3 -> *("france") + 3 -> nce
stt[-1][-2]+1 : *(*(stt-1)-2) + 1 -> *(ptrc+2-2) + 1 -> *("korea") + 1 -> orea

잘 읽어보시면 아시겠죠? stt의 위치가 계속 변경되는 것을 착안해서 읽어보세요
처음 두개는 stt가 하나씩 증가합니다. 그리고 세째, 네째 것은 stt가 변화하지 않습니다.

이해되셨으면 좋겠네요^^

+ -

관련 글 리스트
1527 [질문] 포인터 printf 쪽만... T.T 라딘 1757 2002/11/11
1533     Re: 고마워요 T.T 생각한거랑 --; 완전... 달랐어요 T.T 라딘 1370 2002/11/12
1532     Re:[질문] 포인터 printf 쪽만... T.T laSuna 1456 2002/11/12
1545         Re:Re:[질문] 다시...요...죄송 라딘 1364 2002/11/14
1555             Re:Re:Re:[질문] 다시...요...죄송 laSuna 1449 2002/11/15
1570                 Re: 그렇쿤요... 고맙습니다. 라딘 1362 2002/11/15
1531     어렵네요. 이영우 1454 2002/11/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.