관리 메뉴

IT창고

C 구조체(Struct) 본문

프로그래밍/C

C 구조체(Struct)

방구석여포 2018. 6. 4. 19:25

C언어의 구조체(Struct)에 대해 알아보겠습니다.

구조체는 사용자 정의 자료형(type)으로 다양한 타입의 변수들을 묶은 자료형이라고 할수있습니다. 배열과도 비슷한데 배열은 '같은 타입' 변수들의 나열한다면 구조체는 '여러 타입' 변수들의 나열합니다. 구조체는 자료형이기 떄문에 미리 선언하고 사용합니다.


기본적인 사용은 아래와 같습니다.

struct STUDENT

{

char szA[20]; 

int iB;

double dC;

};


구조체 멤버 선언 시에는 초기화를 할 수 없으며 위와 같이 자료형이 있다고 선언만 할뿐 실제 공간이 만들어지는건 아닙니다. 위의 구조체를 이용해서 변수를 만들때 공간이 만들어지며 그순간에 초기화를 진행합니다.


typedef 를 struct앞에 붙여 사용하면 구조체를 사용할때 일일이 struct를 붙이지 않고 사용할수있습니다.


pCircle은 구조체의 포인터 변수로 해당 주소의 멤버 접근 시 -> 사용합니다. 이 멤버를 접근해보면 sPoint가 있고 포인터변수가 아닙니다 이럴 경우에는 . 을 사용합니다.


구조체를 함수에서 다룰경우에는 포인터변수로 다루는 것이 좋습니다. 크기를 고려하면 자원을 많이 소비하기 때문에 비효율적이기 때문입니다.


열거형(enumeration)에 대해 간단히 알아보겠습니다.

열거형은 '정수'를 미리 열거해놓은 자료형으로 가독성 향상 용도로 사용됩니다. 값을 지정하지않았을 경우 기본값은 0이며 원하는 정수를 어느 위치던 대입할수있습니다. 그리고 값이 지정되지 않으면 앞의 숫자보다 1 씩 증가합니다



예를 들어 switch ~ case문을 사용할때 단순히 1,2,3를 사용하는것보다 열거형으로 숫자에 이름을 부여하면 코드를 해석할때 가독성이 좋아집니다.


연습문제 종합

3명의 학생 정보를 입력 받고 출력하기

- 학생 정보

이름

나이

전화번호 (문자열)

과목1 점수

과목2 점수

과목3 점수

- 등급

> 평균 점수 90점 이상 1, 80점 이상 2, 70점 이상 3, 나머지 4

- 1명 학생 정보 입력 받는 함수 : InputStudent()

- 1명 학생 정보 출력하는 함수 : PrintStudent()

- 열거형 (enum) 사용 -> GRADE = { GRADE1=1, GRADE2, ...


[출력결과]

[1번 학생 정보 입력]

이름 : 홍길동

나이 : 20

번호 : 010-2233-4455

점수1 : 100

점수2 : 90

점수3 : 91

... 3번 학생 까지 쭉 입력 받기


[홍길동 학생의 정보]

나이 : 20세

번호 : 010-2233-4455

총점 : 281

평균 : 93.7

등급 : 1등급

... 3번째 학생 정보까지 쭉 출력하기

*/


void main()

{

//1. 입력받을수있는 공간을 생성(구조체 배열 변수)

//2. 입력받는 함수에게 구조체의 주소를 전달  -> main에서 만든 공간(구조체)에 값을 저장돼야함

//3. 출력하는 함수에게 구조체의 주소를 전달  --> 값이 저장되는 공간은 main함수에서 만들고 주소만 왔다갔다 

//조건,반복(입력받는함수, 출력하는함수를3번씩호출),함수,배열,포인터,구조체 모두 사용해서 코드 작성

}



'프로그래밍 > C' 카테고리의 다른 글

C 동적할당  (0) 2018.06.05
C 포인터(Pointer)  (0) 2018.06.02
C 배열(Array)  (0) 2018.05.29
C 함수 연습문제  (0) 2018.05.24
C Function (함수)  (0) 2018.05.24
Comments