#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
```
'개념 > 혼자 공부하는 C언어' 카테고리의 다른 글
chapter 17) 구조체 포인터의 사용 (0) | 2024.09.27 |
---|---|
chapter 17) 공동체를 사용한 학번과 학점 데이터 처리 (0) | 2024.09.26 |
chapter 16) 3개의 문자열을 저장하기 위한 동적 할당 (0) | 2024.09.24 |
chapter 16) 동적 하랑한 저장 공간을 사용하는 프로그램 (0) | 2024.09.23 |
chapter 16) 동적 할당 영역의 문자열을 함수로 출력 (0) | 2024.09.22 |