포인터문제인데..제대로해석했는지/이해를잘못하겠습니다.
분홍색진주
원래문제 자체에 오타자도 포함되어있기에..
#include stdio.h
/* program ptr.c */
void main()
{
int val=5;
int *ip1=0;
int *ip2=0;
*ip1=&val;--(ip1=&val;로 수정)
ip2=ip1;
(*ip2)++;
val=*ip2+*ip1;
printf(%d %d %d\n, val, *ip1, *ip2);
}
했는데 이해 가 잘안가네요..
int val=5;--이건 val=5라고 선언..
int *ip1=0;
int *ip2=0;--*ip1과 *ip2 가 가리키는 숫자가 0이라는것
ip1=&val;--변수 val의 주소를 포인터변수 ip1에 저장
ip2=ip1;--ip2는ㄴip1값이다.
(*ip2)++;--이해가 안가요...;ㅅ;
val=*ip2+*ip1;--이쪽도 뭔지 이해가..;ㅅ;
printf(%d %d %d\n, val, *ip1, *ip2);
사이트여러분 도와주세요.. ;ㅅ;
-
에가득
아 0은 NULL이었구나...헐킈..ㅠㅠ 아.. 정확히 이해갔습니다 감사합니다.
-
세나
Pointer는 그림을 그려서 설명하면 .. 무지 쉬운데 ^^
-
피라
int *ip1 = 0; 은 ip1이 가르키는 주소가 NULL이라는 것이죠..
(*ip2)++는 ip2가 참조하는 값을 1 증가 시킨다는 거죠..
따라서.. val의 주소를 ip1이 담고 있고 ip1과 ip2가 같으므로..
val와 *ip1과 *ip2가 모두 같은 값을 담고 있으니까..
(*ip2) ++를 하면.. val와 *ip1과 *ip2가 모두 6이 되는 거죠..
그럼..
val = 6+6이니까.. 12가 되죠 ^^