게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
포인터 연산 질문입니다!
게시물ID : programmer_17505짧은주소 복사하기
작성자 : JORDAN
추천 : 0
조회수 : 375회
댓글수 : 4개
등록시간 : 2016/06/06 00:35:40
옵션
  • 본인삭제금지
#include <stdio.h>

void main() {
int a = 10, b = 20, c = 30;
int *p = &a;
printf("a =%d, b=%d, c=%d\n", a, b, c);
printf("&a=%x,&b=%x,&c=%x\n",&a, &b, &c);
printf("p=%x\n", p);
printf("*(p+2)=%d\n", *(p + 2));
printf("*p+2=%d\n",*p+2);
}


캡처.PNG


학교에서 배운 것을 이해하여 설명해보면,

&a는 10이 들어간 상자 a의 주소값을,
int *p = &a 는 상자 a에 들어있는 값을 의미한다고 이해하였습니다.

그렇게 따지면,  printf("p=%x\n", p); 이 부분에서 p를 출력을 하게되면, 10이 나와야 하는것 아닌가요??





---------


또, 포인터 연산자에서...

#include <stdio.h>

void main() {
int *ptr1, *ptr2;
int a = 100, b = 200;
ptr1 = &a;
ptr2 = &b;
*ptr1 = &b;
*ptr1++;
(*ptr2)++;
printf("ptr1 = %d, ptr2 = %d\n", *ptr1, *ptr2);
}



마지막 printf에서 *ptr1을 꺼낼때, 아래에 있는 증감연산이 되어 나오는건가요??
*ptr1++;
(*ptr2)++;


답은 ptr1 = 1245040, ptr2 = 201 이라고 나와있는데,

*ptr1, *ptr2는 int형이니 4Byte라서 증감연산이 되어서 1245040이 나온다고 배웠습니다.

만약에 증감연산이 되지 않고으면 100이 나오는건가요?


또한 *p1++과, *++p1의 차이점을 알려주시면 감사하겠습니다..
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호