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

chapter 17) typedef 를 사용한 자료형 재정의

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

struct student{
    int num;
    double grade;
};
typedef struct student Student;
void print_data(Student *ps);

int main(void){
    Student s1 = {315, 4.2};
    print_data(&s1);
    return 0;
}

void print_data(Student *ps){
    printf("class : %d\n", ps -> num);
    printf("grade : %.1lf\n", ps -> grade);
}

### 프로그램의 구성

- `struct student`: 학생의 정보를 나타내기 위한 구조체로, 정수형의 `num` (학번)과 실수형의 `grade` (성적) 두 개의 멤버 변수를 갖습니다.
- `typedef struct student Student;`: `struct student` 구조체에 대한 별칭으로 `Student`를 정의합니다. 이를 통해 `struct student` 타입의 변수를 선언할 때 `Student`라는 이름을 사용할 수 있게 됩니다.
- `void print_data(Student *ps);`: `Student` 구조체 포인터를 매개변수로 받아 학생의 학번과 성적을 출력하는 함수의 프로토타입입니다.
- `main` 함수에서는 `Student` 타입의 변수 `s1`을 선언하고 초기화한 뒤, `print_data` 함수에 `s1`의 주소를 전달하여 `s1`이 가지고 있는 학생 정보를 출력합니다.

### 실행 과정

1. `Student s1 = {315, 4.2};`: `s1`이라는 `Student` 타입의 변수를 선언하고, 학번을 `315`, 성적을 `4.2`로 초기화합니다.
2. `print_data(&s1);`: `s1`의 주소를 `print_data` 함수에 전달합니다. 이로써 `print_data` 함수는 `s1`이 가리키는 학생 정보에 접근하여 이를 출력할 수 있습니다.
3. `print_data` 함수는 전달받은 `Student` 포인터 `ps`를 통해 학번(`ps -> num`)과 성적(`ps -> grade`)을 출력합니다.

### 출력 결과

```
class : 315
grade : 4.2
```

728x90
반응형
LIST