[C언어] Struct ( 구조체 )

Struct ( 구조체 )

  • 사용자 정의 데이터 타입
  • 기존데이터타입을 묶어서 새로운 타입 생성
  • 선처리부에 등록 해야한다.

 

구조체 정의

struct Score
{
    char name[10];
    int kor,eng,mat,total;
    float avg;
};


name(10 byte), kor,eng,mat,total,avg ( 20byte )총 30byte 크기의 Score라는 구조체 정의

구조체 별칭

typedef struct score {

	char name[10];
	int kor, eng, mat, total;
	float avg;
}SCORE;
int main() {
	//struct score student;
	SCORE student;
}


구조체 맨앞에 typedef를 써주고 맨뒤에 정의하고싶은 이름을 쓰면 그 이름으로 정의할 수 있다.

ex) struct score student  --> SCORE student


 

구조체 변수 선언

//Score라는 구조체에 접근할 수 있는 sc 변수 선언
struct Score sc;

sc.kor = 10;  //sc뒤에 . 을 붙히고 변수명을 입력하여 접근이 가능하다.

&sc.kor //kor의 주소에 접근하려면 kor이아니고 sc앞에 &가 붙는다.

 


성적관리 ( 구조체 )

#include<stdio.h>

struct score {	//구조체 정의
	char name[10];
	int kor, eng, mat, total;
	float avg;
};
int main() {
	struct score student;

	//입력
	printf("이름: ");
	scanf("%s", student.name);	//구조체의 주소에 접근
	printf("국어: ");
	scanf("%d", &student.kor);
	printf("영어: ");
	scanf("%d", &student.eng);
	printf("수학: ");
	scanf("%d", &student.mat);

	student.total = (student.kor + student.eng + student.mat);
	student.avg = student.total / 3;

	//출력
	printf("\n이름\t국어\t영어\t수학\t총점\t평균\n");
	printf("%s\t", student.name);
	printf("%d\t", student.kor);
	printf("%d\t", student.eng);
	printf("%d\t", student.mat);
	printf("%d\t", student.total);
	printf("%f\t", student.avg);
}

 

댓글

Designed by JB FACTORY