배열을 가리키는 포인터가 있었다면 구조체를 포인터도 당연히 있을 것! 오늘은 구조체를 어떻게 가리키는지 살펴보자.
우선 포인터는 이렇게 생성한다.
struct student *ps
구조체에서 포인터가 사용되는 경우는 두 가지이다.
1) 포인터가 구조체를 가리킴
2) 포인터가 구조체의 멤버가 됨
1) 포인터가 구조체를 가리킴
struct student s = { 123123, 12341, 1234}
struct student *p
p = &s
이렇게 p는 구조체 s를 가리키는 포인터가 된다.
포인터로 구조체 내 인자들을 가리키는 방법은 다음과 같다.
(1) (*p).name // 멤버 참조 연산자인 . 보다 참조연산자 *의 우선순위가 더 높다
(2) p->name
2) 포인터가 구조체의 멤버가 됨
struct date {
int year;
int month;
int day;
};
struct student {
int number;
char name[20];
double grade;
struct date *dd;
};
struct stdent s;
struct date d;
s.dd = &d;
구조체 안에 구조체 넣는 방식 + 포인터 사용법이라고 생각하면 된다.
여기서 s안에 있는 d안에 있는 year을 뽑아내고 싶다면
(1) *(s.dd).year
(2) s.dd->year
두 가지의 방법을 이용하면 된다.
'Data Structure [C] > 문돌이도 할 수 있는 [C언어 자료구조]' 카테고리의 다른 글
#17 [C 자료구조] 동적/정적 메모리 할당할당 (0) | 2019.04.20 |
---|---|
#16 [C 자료구조] 열거형(enum)과 공용체(union) (0) | 2019.04.20 |
#14 [C 자료구조] 구조체: 다른 타입들의 배열 (0) | 2019.04.20 |
#13 [C 자료구조] 배열과 포인터의 혼종 (0) | 2019.04.19 |
#12 [C 자료구조] 2차원 배열: 행렬이 된 배열 (0) | 2019.04.19 |