프로그래밍 언어/C

C언어 26강) 구조체(struct) 기본개념 및 초기화

happy_life 2020. 11. 15. 14:37

 

구조체의 개념

 : 서로 다른 데이터 타입의 집합. (배열이 동일한 데이터 타입을 쓰는 것과는 다른 개념)

 : 서로 다른 데이터 타입을 처리하지 못하는 배열의 한계를 해결하고 자료를 체계적으로 관리하기 위해 등장한 개념

 

학번 성명 국어점수 영어점수 수학점수
20200801 홍길동 88 99 78
20200802 홍동길 89 77 18

▲서로 다른 데이터 타입의 모음 예시

 

구조체, 레코드, 필드의 개념 관계

 

구조체는 여러 가지 종류의 데이터 타입을 묶어 통합된 변수로 생성하고, 이렇게 생성된 데이터를 레코드라고 한다.

위의 예시에서 학번, 성명, 국어 점수 등의 데이터를 필드라고 하고 필드로 구성된 데이터들을 처리하기 위해 구조체를 사용한다.

 

●구조체의 선언 코드 예제

struct score{

     int sno;
     char name[10];
     int kor;
     
     
}; //구조체 끝에는 반드시 ; 를 붙여야함

구조체 이미지화

 

한편, 이렇게 구조체를 선언하고 구조체를 부를 때마다 score라고 입력하기 불편하므로 우리는 별명을 붙여줄 수 있다. 이것이 바로 구조체의 변수 정의라는 것이다.

 

구조체의 변수정의 


struct score s1; //구조체 변수 s1으로 정의

 

이제 구조체의 개념과 정의를 알아봤으니 구체적으로 사용하는 코드 예제를 확인하자.

 

●구조체 활용 코드 예시

#include <stdio.h>
#include <string.h>
struct score{
     int sno;
     char name[10];
     int kor;
    
};


int main()
{
     struct score s; //score 구조체 s로 정의

     s.sno = 2020101001;
     strcpy(s.name,"홍길동"); // 문자열은 숫자처럼s.name으로 값을 넣어줄수 없음.
     s.kor = 88;

     printf("\n%d\n ", s.sno);
     printf("%s\n ", s.name);
     printf("%d\n ", s.kor);


}

결괏값

 

홍길동, 김삿갓 등 여러 명의 데이터를 가져오고 싶을 때 위의 예시처럼 저렇게 일일이 넣으려면 시간이 너무 걸린다. 이러한 단점을 위해 존재하는 것이 바로 구조체 변수의 초기화이다.

 

구조체 변수의 초기화

 

●구조체 변수 초기화 활용 코드 예제

#include <stdio.h>

struct score{

     int sno;
     char name[10];
     int kor;
    
};


int main()
{
     struct score s1 = {2020101001, "홍길동", 87};  //s1선언과 동시에 초기화
     struct score s2 = {2020101002, "김삿갓", 85};  //s2선언과 동시에 초기화

     printf("s1구조체: %d, %s, %d \n", s1.sno, s1.name, s1.kor);
     printf("s2구조체: %d, %s, %d \n", s2.sno, s2.name, s2.kor);
     
     

}

결괏값