하나 이상의 변수를 묶어 그룹화하는 사용자 정의 자료형
>> 똑같은 변수를 여러번 사용해야 하는 경우에 효과적
main() 밖에 사용(안에 있어도 상관 없음)
typedef struct 구조체이름 {
자료형 변수명;
자료형 변수명;
...
}구조체 별칭;
typedef struct _STUDENT {
char name[10]; //이름
int kor;
int eng;
int math;
int hap;
double avg;
char grade;
} ST;
typedef는 자료형의 별칭을 만드는 기능
구조체 초기화
ST st1 = { "홍길동",100,90,80,0,0.0,'A' };
구조체 변수에 접근
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//공통적인 정보를 구조체로 만든다
//학생 정보 구조체 -> 내가 새롭게 정의한 타입
typedef struct _STUDENT {
char name[10]; //이름
int kor;
int eng;
int math;
int hap;
double avg;
char grade;
} ST;
int main() {
ST st; //구조체 변수의 선언(생성)
//STUDENT : 내가 만들어낸 타입, st 변수
//(이 안에 char name[10];,int kor;,int eng;,int math;,int hap;,int avg;,char grade; 다 있다.)
//STUDENT* pst = &st;
//pst->kor = 50;포인터 일떄는 화살표를 사용한다.
printf("이름 : ");
scanf("%s", st.name); //& 필요 없다. 배열이다 (문자열)
printf("국어 : ");
scanf("%d", &st.kor); //& 필요
printf("영어 : ");
scanf("%d", &st.eng);
printf("수학 : ");
scanf("%d", &st.math);
st.hap = st.kor + st.eng + st.math;
st.avg = st.hap / 3.0;
printf("학생이름 : %s\n", st.name);
printf("국어점수 : %d\n", st.kor);
printf("영어점수 : %d\n", st.eng);
printf("수학점수 : %d\n", st.math);
printf("총점 : %d\n", st.hap);
printf("평균 : %lf\n", st.avg);
}
구조체와 배열
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//공통적인 정보
//main() 밖에 사용(안에 있어도 상관 없음)
//학생 정보 구조체 정의 -> 내가 새롭게 정의한 타입
typedef struct _STUDENT {
char name[10]; //이름
int kor;
int eng;
int math;
int hap;
double avg;
char grade;
} ST;
int main() {
ST st; //구조체 변수의 선언(생성)
ST stArr[2] = { 0, }; //구조체 배열 선언
for (int i = 0; i < 2; i++) {
printf("이름 : ");
scanf("%s", stArr[i].name);
printf("국어 : ");
scanf(" %d", &stArr[i].kor);
printf("영어 : ");
scanf(" %d", &stArr[i].eng);
printf("수학 : ");
scanf(" %d", &stArr[i].math);
stArr[i].hap = stArr[i].kor + stArr[i].eng + stArr[i].math;
(stArr+i)->avg = (stArr+i)->hap / 3.0;
}
for (int i = 0; i < 2; i++) {
printf("학생이름 : %s\n", (stArr + i)->name);
printf("국어점수 : %d\n", (stArr + i)->kor);
printf("영어점수 : %d\n", (stArr + i)->eng);
printf("수학점수 : %d\n", (stArr+i)->math);
printf("총점 : %d\n", (stArr+i)->hap);
printf("평균 : %.2lf\n", (stArr+i)->avg);
printf("=================================\n");
}
}
'C > C' 카테고리의 다른 글
모듈화 2 - 구조체 (0) | 2022.10.08 |
---|---|
모듈화 1 (0) | 2022.10.08 |
배열 2 - 출력 (0) | 2022.10.06 |
gets() - 문자열 입력 (0) | 2022.10.05 |
sizeof 연산자 O 함수 X (0) | 2022.10.04 |