포털:고등학교/정보·통신 계열 전문 교과(2015)/프로그래밍/구조체와 공용체
구조체와 공용체
[편집]구조체:배열은 여러 갋들을 모아서 저장하고 사용할 떄 유용하는데 이떄 배열의 갋들은 반드시 같은 자료형이어야 하는데 프로그램 작성
시 종류가 다른 여러 자료형을 하나로 묶어 처리할 때가 있는데 이들 자료를 하나로 묶어서 한번에 처리하는 것
사전적 뜻:어떤 객체가 가진 속성들을 모아 놓은 것
구조체 선언
[편집]하나의 데이터를 묶어어서 처리하는데 사용하는 구조체 struct(구조화된 데이터형) <struct를 사용하면 한 구조체로 선언된 모든 데이터를 가져와 하나의 새로운 데이터형처럼 사용할 수 선언 형식
선언 형식 struct 구조체명{ 자료형 변수명1; 자료형 변수명2; ...... };
구조체의 정의
[편집]struct myGrade { <구초체 키워드와 구조체 이름 struct:구조체 키워드 myGrade:구조체 이름 kmy:구조체 변수명 char *name;→ int korean;→ < 구조체 맴버 int english;→ in math;→ };
위 코드는 여러 데이터를 가진 하나의 사용자 정의 데이터형을 새로 만든다. 구조체를 정의한 뒤에 이 구조체를 사용하려면 일반적인 원시 변수를 선언 하듯이 구조체 변수를 선언하고 정의한다. 이때 선언과 정의는 별도로 할 수 있다. 구조체 변수가 생성되면 그 구조체 안에 있는 각각의 맴버의 접근할 때에는 도트(.)연산자를 사용한다. →printf("%d",kmy.math);
구조체의 배열
[편집]구조체 변수는 학생 한 명의 데이터만을 저장할 수 있다. 그러나 한 학급의 구성원이 20명이라면 20명의 성적정보를 저장해야하는데 이때 사용하는 것이 구조체의 배열이다. 구조체 배열을 선언하는 형식은 구조체 배열 앞에 struct를 붙인다.
struct myGrade { char *name; int korean; int english; int math; }; int main(void) { struct myGrade myClass[20]; →20명의 성적 정보 저장 myClass[0].name = "강모연"; myClass[1].name = "서대영"; myClass[0].korean = 100; myClass[1].math = 84; printf("%s의 국어 점수는 %d\n", myClass[0].name, myClass[0].korean); printf("%s의 수학 점수는 %d\n", myClass[1].name, myClass[1].math); return 0; } 강모연의 국어 점수100 서대형의 수학점수 84
구조체의 배열 <20명의 성적 정보를 저장할 때 20개의 구조체를 저장할 구조체 배열을 선언하 고, 배열의 각 요소마다 한 사람의 이름과 3과목 성적 구조체를 연결하고 구조체 배열을 사용하여 각 학생의 성명과 성적 정보를 저장할 때에는 다음 프로 그램에서와 같이 배열 첨자와 도트(.) 연산자를 같이 사용하면 구조체 멤버(변수)에 접근할 수 있다.>
공용체
[편집]C 언어에는 하나의 메모리 공간을 여러 개의 변수들이 공유할 수 있게 하는 기능 이 있다. 이것을 공용체(Union)이라 한다.하나의 메모리 공간을 여러 개의 변수가 공유하는 이유는 메모리를 절약하기 위해서이다. 공용체는 구조체와 비슷하지만 구 조체는 구조체 안의 멤버 변수가 하나의 메모리 공간을 공유하지는 않는다.
메모리 크키를 알아보는 프로그램
#include <stdio.h> union studentInfoUnion { int stNum; char name[20]; int stAge; }; int main(void) { printf("%d byte", sizeof(union studentInfoUnion)); return 0; 실행결과 20byte
위 프로그램을 실행하면 공용체 studentInfoUnion에 가장 큰 기억 공간을 차지하 는 name[20]의 크기가 출력된다. 즉 20 byte가 출력된다. }