c언어/기본 개념
구조체를 가리키는 포인터와 간접 멤버 연산자 ->
감조자림
2022. 11. 10. 18:16
예를 들어,
struct student{
int number;
char a[10];
double grade;
}
struct student s = { 24, "kim", 4.3 };
struct student *p;
p = &s;
printf("%d %s %f", (*p).number, (*p).name, (*p).grade);
이 경우, (*p).number, (*p).name, (*p).grade 는 각각 s.number, s.name, s.grade 와 같다.
*p.number 라고 하지 않고, (*p).number라고 하는 것은 전자와 같이 코드를 짜면 *(p.number)와 같은 의미가 되어버린다.
그리고 (*p).number를 p->number 라고 표현할 수 있다. 둘은 동일한 의미이다.
->를 간접 멤버 연산자라고 부른다.
c express 책 577쪽 참조