-
포인터와 구조체Dev Language/C 2008. 9. 1. 20:44struct _point p1, *ps;
p1 : 8byte
ps : 4byte
&p1 : 4byte (p1의 주소)
&p2 : 4byte (포인터 변수 ps의 주소)
*p1 : X
*ps : 8byte
p1.x, p1.y : p1의 멤버변수를 의미, 4byte(x,y가 int라면)
&p1.x, &p1.y : "."이 "&"보다 우선순위가 높다.
ps->x, ps->y : 멤버 메모리(x, y)를 의미
&ps->x, &ps->y : "->"이 "&"보다 우선순위가 높다. ps가 가리키는 구조체 메모리의 멤버인 x,y 메모리(변수)의 주소를 의미.
*ps.x : "."이 "*"보다 우선 순위가 높음. ps.x에 먼저 접근, ps가 구조체의 주소이므로 error
(*ps).x : (*ps)는 ps가 가리키는 구조체의 메모리를 의미하며 (*ps).x는 구조체 메모리의 멤버인 x 메모리(변수)를 의미 4byte(int형)
- 출처 : C포인터, 공동환 p211 -