오늘은 구조체에 대해서 이야기 해 보려고 합니다. 구조체는 배열과 비슷하게 많은 데이터를 한번에 관리할 때 편리한 기능입니다. 다만 배열과의 차이점은 배열은 데이터의 타입이 한가지로 고정되는 반면에 구조체는 여러 데이터 타입을 가질 수 있습니다. 그럼 바로 예제를 통하여 구조체의 형태에 대해서 알아보겠습니다.
구조체의 형태
구조체의 가장 기초적인 형태입니다. 프로그램 작성을 시작하고 main함수가 시작되기 전에 struct를 이용하여 구조체를 선언합니다. 구조체는 각 원소의 타입이 제각각인 배열이라고 생각 할 수 있습니다. 이 때문에 배열에서는 배열의 타입만으로 모든 원소의 타입을 알 수 있었지만, 구조체는 그렇지 않습니다. 따라서 구조체는 정의할 때 모든 원소의 타입을 명시해 주어야 합니다.
위 부분이 구조체를 선언하는 부분입니다. struct는 구조체를 의미하고, student는 구조체의 타입명이라고 생각하시면 됩니다. 구조체는 우리가 여러가지 데이터타입을 조합하여 만들기 때문에 그렇게 조합된 구조체 타입을 명명할 수 있어야겠죠? 그 타입명이라고 생각하시면 됩니다. 그리고 math, english, avg를 int(정수)타입의 원소로 선언하였습니다. 물론 int(정수)타입이 아닌 다른 데이터 타입도 추가할 수 있습니다. 구조체를 선언한 후 main함수에서 구조체를 사용하려면 사용자가 원하는 구조체를 따로 다시 선언해 주어야 합니다. 그 부분이 바로 아래 부분입니다.
이렇게 하면 이제 main함수에서 sg라는 이름을 가지는 student타입의 구조체를 사용할 수 있게 되는 것입니다. main함수의 다른 부분은 어려운내용이 없으니 따로 설명하진 않겠습니다. 그럼 바로 실행하여 보겠습니다.
정상적으로 원하는 값이 나오는 것을 알 수 있습니다. 그런데 이렇게 사용한다면 일일이 구조체의 이름을 지정해 주어야 하고, 호출 할 때도 번거로워 보입니다. 어떻게 방법이 없을까요? 당연히 있습니다.
위는 구조체의 이름에 배열을 적용시켜서 만든 예제입니다. 아까 위에서 이야기 했던 내용 중에서 student가 구조체의 타입을 의미하는 타입명이라고 이야기 했던것 기억하시나요? 우리가 int 타입의 array라는 이름을 가지는 크기가 3인 배열을 만들 때 int array[3]이라고 선언 했듯이 student라는 타입을 가지고 class1(1반이라는 의미)이라는 이름을 가지며 크기가 3인 구조체 배열을 만들 때는 struct student class1[3]이라고 선언하면 되는 것입니다. main 함수 부분의 for문이라던가 다른 함수들은 어려운 것이 없으니 그냥 넘어가도록 하겠습니다. 그럼 실행 해 보도록 하겠습니다.
원하는대로 잘 출력되는 것을 알 수 있습니다. 어렵지 않죠? 이게 구조체를 사용하는 기본적인 방법입니다. 그럼 오늘은 여기까지 하고 다음 시간에 좀 더 다양한 구조체의 응용법을 알아보도록 하겠습니다. 감사합니다.
제 블로그를 방문해 주셔서 감사합니다.
도움이 되셨다면 공감(좋아요) 부탁드리고,
댓글은 다른분들께도 좋은 정보일 수 있으니
공개로 부탁드립니다.
여러분의 작은 정성이 좋은 포스팅을 생산하는
힘이 된답니다. :)
감사합니다.
'PROGRAMMING > C' 카테고리의 다른 글
C언어 구조체 응용 (구조체와 함수) (0) | 2022.12.06 |
---|---|
C언어 구조체 심화 (구조체포인터) (0) | 2022.11.30 |
C언어 Function 응용 #2 (사용자 정의 함수) (0) | 2022.11.23 |
C언어 함수의 원형 (0) | 2022.11.21 |
C언어 Function 응용 #1 (사용자 정의 함수) (1) | 2022.11.16 |
댓글