반응형
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include <stdio.h> #include <stdlib.h> typedef struct { int x; int y; }ptr; int main() { ptr pt1 ={1,2}; ptr *pt2 = &pt1; // 포인터가 pt1의 주소값을 가리키게 하면 곧바로 값들이 출력된다. // pt2.x = &pt1.x; // pt2.y = &pt1.y; printf("%d %d %d %d",pt1.x,pt1.y,(*pt2).x,pt2->y); // (*pt2).y = pt2->y 서로 같은 모양이다. } | Crocus |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <stdio.h> #include <stdlib.h> typedef struct { int x; int y; }ptr; int main() { ptr pt1 ={1,2}; ptr *pt2; pt2.x = &pt1.x; pt2.y = &pt1.y; printf("%d %d %d %d",pt1.x,pt1.y,(*pt2).x,pt2->y); } | Crocus |
그런데
pt2.x = &pt1.x;
pt2.y = &pt1.y;
이런 식으로 바로 유도하면 값이 나오지 않는다.
왜냐하면 포인터 ptr2의 공간이 할당 되어 있지 않기 때문이다.
이때는
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include <stdio.h> #include <stdlib.h> typedef struct { int x; int y; }ptr; int main() { ptr pt1 ={1,2}; ptr *pt2 = (ptr*)malloc(sizeof(ptr)*1); (*pt2).x = pt1.x; pt2->y = pt1.y; // (*pt2).y = pt1.y;와 같다. printf("%d %d %d %d",pt1.x,pt1.y,(*pt2).x,pt2->y); } | Crocus |
이렇게 바꾸면 실행이 된다.
반응형
'Basic > C' 카테고리의 다른 글
static 변수 (0) | 2015.11.21 |
---|---|
구조체 배열 포인터 (0) | 2015.11.21 |
스택, 구조적, 객체지향 프로그래밍에 관한 간단한 내용 (0) | 2015.11.16 |
배열, 포인터 몇가지 정리내용 (0) | 2015.11.16 |
2차원 배열 동적할당 및 구성 (0) | 2015.10.09 |