본문 바로가기
개념/혼자 공부하는 C언어

chapter 17) 구조체 포인터의 사용

by kiseno 2024. 9. 27.
728x90
반응형
SMALL
#include <stdio.h>

struct score{
    int kor,eng,math;
};

int main(void){
    struct score yuni = {90,80,70};
    struct score *ps = &yuni;

    printf("kor : %d\n", (*ps).kor);
    printf("eng : %d\n", ps -> eng);
    printf("math : %d\n", ps -> math);

    return 0;
}

### 구조체 정의

- `struct score`는 세 과목의 점수를 정수형으로 저장하는 구조체입니다. 각 멤버 변수 `kor`, `eng`, `math`는 국어, 영어, 수학 점수를 나타냅니다.

### `main` 함수

- `struct score yuni = {90, 80, 70};`를 통해 `score` 구조체 타입의 변수 `yuni`를 선언하고 초기화합니다. 여기서 `yuni`는 국어 90점, 영어 80점, 수학 70점의 점수를 가집니다.
- `struct score *ps = &yuni;`를 통해 `yuni` 변수의 주소를 저장하는 포인터 `ps`를 선언하고 초기화합니다.
- 첫 번째 `printf`문에서는 `(*ps).kor`를 사용하여 `ps`가 가리키는 구조체의 `kor` 멤버에 접근합니다. 이는 구조체 포인터를 역참조하여 멤버에 접근하는 방식입니다.
- 두 번째와 세 번째 `printf`문에서는 `ps -> eng`와 `ps -> math`를 사용하여 `eng`와 `math` 멤버에 접근합니다. 이는 구조체 포인터를 통해 멤버에 직접 접근하는 더 간결한 방식입니다. `->` 연산자는 구조체 포인터를 역참조하고 멤버에 접근하는 작업을 단일 단계로 수행합니다.

### 실행 결과

이 코드를 실행하면 다음과 같은 출력을 얻습니다:

```
kor : 90
eng : 80
math : 70
```

728x90
반응형
LIST