하고 싶은 얘기를 마음대로 쓰는 게시판입니다. 개발 관련 이야기, 살면서 재미있었던 일, 인생 상담, 예쁘고 신기한 사진 등 마음대로 떠들어 보세요. 단, 개발관련 질문만은 별도의 게시판을 이용해 주십시오.
  • 포인터 질문 있습니다.
  • 조회 수: 571, 추천 수: 0/0, 2017-08-18 16:03:59(2017-06-05)
  • 책 432Page 
    void pointer2 예제에 대한 질문인데요


    void main() {
    int ar[] = { 1,2,3,4,5 };
    void *vp;

    vp = ar;
    vp = ((int*)vp)++;  // 식이 수정할 수 있는 Ivalue여야 합니다.
    printf("%d\n", *(int*)vp);
    }

    vp=(int*)vp+1;은 가능합니다.


    질문 1.

    ((int*)vp)++로 인트형 포인터 변수로 바꾸면 좌변값이 성립하지 않는다고 합니다.

    왜 인트형 포인터로으로 바뀐 vp가 왜 좌변값이 성립되지 않는지 고민해봐도 잘 모르겠네요.

    아에 숫자가 바뀔수 없는 값이라면 이해가 가겠는데 

    vp=(int*)vp+1;이 문장은 동작하기 때문에 왜 좌변값이 되지 못하는지 잘 모르겠습니다. 



    질문 2.

    (int*)vp++; - 식이 완전한 개체 형식에 대한 포인터여야 합니다.

    이 경우 vp++가 결합순서상 우측에 있어서 먼저 실행되지만 후위형이기 때문에 
    (int*)이 먼저 실행되고 나중에 vp++가 실행되는것 아닌가요? 
    그렇다면 오류도 '식이 수정할 수 있는 Ivalue여야 합니다.'가 나와야 할텐데 
    왜 '식이 완전한 개체 형식에 대한 포인터여야 합니다.'가 나오는 지 잘 모르겠습니다.
     

댓글 2

  • 앗삼

    2017.06.05 01:19

    질문은 묻고 답하기에 쓰는게 맞지만 관리가 전혀 안되고 있는듯 하여 떠들어 보자 게시판에 작성하였습니다.
  • 소보루

    2017.08.18 16:03

    nCount++ = 5; //Error
현재 게시판 기능 테스트중입니다. 디자인이나 게시판 구성은 언제든지 예고없이 변경될 수 있습니다.