반응형
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->= pt1.y;  // (*pt2).y = pt1.y;와 같다.
 
 
 
 printf("%d %d %d %d",pt1.x,pt1.y,(*pt2).x,pt2->y);
 
}
 
Crocus


이렇게 바꾸면 실행이 된다.





반응형