<div>#include <stdio.h></div> <div><br></div> <div>void main() {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int a = 10, b = 20, c = 30;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int *p = &a;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("a =%d, b=%d, c=%d\n", a, b, c);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("&a=%x,&b=%x,&c=%x\n",&a, &b, &c);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("p=%x\n", p);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("*(p+2)=%d\n", *(p + 2));</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("*p+2=%d\n",*p+2);</div> <div>}</div> <div><br></div> <div><br></div> <div> <div style="text-align:left;"><img src="http://thimg.todayhumor.co.kr/upfile/201606/14651403851719593463ad41569178e14d6aca0f29__mn527809__w301__h150__f14345__Ym201606.png" width="301" height="150" alt="캡처.PNG" style="border:none;" filesize="14345"></div><br></div> <div><br></div> <div>학교에서 배운 것을 이해하여 설명해보면,</div> <div><br></div> <div>&a는 10이 들어간 상자 a의 주소값을,</div> <div>int *p = &a 는 상자 a에 들어있는 값을 의미한다고 이해하였습니다.</div> <div><br></div> <div><b>그렇게 따지면, <span class="Apple-tab-span" style="font-size:9pt;line-height:1.5;white-space:pre;"> </span><span style="font-size:9pt;line-height:1.5;">printf("p=%x\n", p); 이 부분에서 p를 출력을 하게되면, 10이 나와야 하는것 아닌가요??</span></b></div> <div><span style="font-size:9pt;line-height:1.5;"><br></span></div> <div><span style="font-size:9pt;line-height:1.5;"><br></span></div> <div><br></div> <div><br></div> <div><br></div> <div>---------</div> <div><br></div> <div><br></div> <div>또, 포인터 연산자에서...</div> <div><br></div> <div> <div>#include <stdio.h></div> <div><br></div> <div>void main() {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int *ptr1, *ptr2;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int a = 100, b = 200;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>ptr1 = &a;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>ptr2 = &b;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>*ptr1 = &b;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>*ptr1++;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>(*ptr2)++;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("ptr1 = %d, ptr2 = %d\n", *ptr1, *ptr2);</div> <div>}</div></div> <div><br></div> <div><br></div> <div><br></div> <div>마지막 printf에서 *ptr1을 꺼낼때, 아래에 있는 증감연산이 되어 나오는건가요??</div> <div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>*ptr1++;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>(*ptr2)++;</div></div> <div><br></div> <div><br></div> <div>답은 ptr1 = 1245040, ptr2 = 201 이라고 나와있는데,</div> <div><br></div> <div><b>*ptr1, *ptr2는 int형이니 4Byte라서 증감연산이 되어서 1245040이 나온다고 배웠습니다.</b></div> <div><b><br></b></div> <div><b>만약에 증감연산이 되지 않고으면 100이 나오는건가요?</b></div> <div><br></div> <div><br></div> <div><b>또한 *p1++과, *++p1의 차이점을 알려주시면 감사하겠습니다..</b></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.