PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2006/09/21 09:36:35
Name KallS
Subject C++ 질문드립니다.
제가 포인터변수 쪽을 공부하다가 의문이 생겼는데요
#include <iostream.h>


void main()
{

        int a[] = {10, 20, 30};
        int *pa;

        pa=a;

        cout << "*pa : " << *pa << endl;
        cout << "*(pa+1) :" << *(pa+1) << endl;
        cout << "*pa++ : " << *pa++ << endl;
                
        cout << "(*pa)++: " << (*pa)++ << endl;
        cout << "*pa : " << *pa << endl;
        cout << "*pa++ : " << *pa++ << endl;
        cout << "*pa++ : " << *pa++ << endl;

}

여기서요
포인터변수 *pa 가 증가한거기때문에

*pa++ 까지는 20을 가진다는것이 이해가 갑니다.
하지만 후위증감이라 10이 출력되고 *pa는 20이 되는거구요
그런데..
그 후부터 막힙니다.
(*pa)++  은.. 후위 연산이라 21이 나오지만
*pa를 그다음에 cout 해보아도 *pa는 21을 가진다는것을 알수있습니다.
그러나 *pa++ 를 마지막으로 cout  해보면
30이 출력이 됩니다.
21에서 번지주소 1을 더해서 가는게 아닌가요??
*pa가 21에서 30으로 변하게 된건가요.
답변부탁드려요..~

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
06/09/21 10:13
수정 아이콘
차근차근 살펴보죠...
cout << "*pa : " << *pa << endl; // 배열의 첫번째가 10 이므로 10 출력
cout << "*(pa+1) :" << *(pa+1) << endl;// 배열의 2번째가 20이므로 20 출력, pa는 여전히 10(a[0])를 가리킴
cout << "*pa++ : " << *pa++ << endl;// 후위연산이므로 일단 10이 출력되고 나서, pa가 a[1]을 가리킴

cout << "(*pa)++: " << (*pa)++ << endl; // a[1]이 20이므로 20을 출력하고 a[1]++ 이 수행됨. 즉 20에 1을 더해 21이 됨.
cout << "*pa : " << *pa << endl;// a[1]은 21. 21을 출력함
cout << "*pa++ : " << *pa++ << endl;// a[1]이 21이므로 21을 출력한 후에 pa는 a[2]를 가리킴.
cout << "*pa++ : " << *pa++ << endl;// a[2]가 30이므로 30을 출력한 후에 pa는 a[3]을 가리킴. (사실 a[3]은 없죠.)
06/09/21 11:48
수정 아이콘
pa 는 포인터, 즉 주소값이라고 생각하시고
*pa 는 포인터의 참조, 즉 정수 값입니다.

그러므로 pa++ 은 주소가 다음 단계로 가는 거니까, 다음 어레이가 되고
(*pa)++ 은 정수 값에 1을 더한 것이죠

예제를 보면 알 수 있듯이, * 보다 ++의 우선순위가 높습니다.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
20961 스타크래프트 까는데요..오류가 납니다. [1] 여자예비역1546 06/09/21 1546
20960 DMB 폰으로 TV보면 요금이? [6] 아가리똥내1848 06/09/21 1848
20959 고2인데요 지각에대한질문입니다.. [6] SPH-S39001732 06/09/21 1732
20958 스타가 하고싶은데...도움 요청합니다. [28] Liberal3435 06/09/20 3435
20957 C++ 질문드립니다. [2] KallS1563 06/09/21 1563
20956 하드디스크 질문입니다. [1] Virus!1487 06/09/21 1487
20955 빵만들기 질문요!!! [1] 장승용1621 06/09/21 1621
20954 게시판에 글 쓸때.... 루카와1610 06/09/21 1610
20953 ctl + alt +del을 누르면요... [3] 니어1705 06/09/21 1705
20952 고수님들 견적쫌 부탁드립니다. [1] 몽정가1438 06/09/21 1438
20951 은행이 횡포를 부릴때는 어디에 도움을 요청해야 하나요? [1] 가자1521 06/09/21 1521
20949 SKT폰을 KTF에서 사용할수잇나여?? [3] IloveAuroRa1539 06/09/21 1539
20946 16강 조지명식 방식 아시는 분 계시면.. 답변 좀. 부탁 드립니다. [1] 제로벨은내ideal1592 06/09/21 1592
20945 여자친구 딴사람만나는것에대한 고민... [2] 게레로1963 06/09/21 1963
20944 캐쥬얼 마이에 대해 질문.. [7] 라다1604 06/09/21 1604
20943 West 유명 클랜 가입제좀 알려주세요.. [1] SweetSorrOw_1617 06/09/21 1617
20940 워3 종족전중.. [7] o에코o1366 06/09/20 1366
20939 MSN메신저 파일전송 [1] ASsA1558 06/09/20 1558
20938 논술을 준비하려고 하는데... [1] Luftspiegelung1564 06/09/20 1564
20936 이제... 이젠... [1] o11o121971 06/09/20 1971
20935 C 프로그래밍 간단한 질문인데요 ^^ [7] 순욱1588 06/09/20 1588
20934 스타 화면이 깨지는데요.. [1] TheLazy1537 06/09/20 1537
20933 애니추천부탁드려요. [4] 은경이에게1890 06/09/20 1890
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로