포털:고등학교/정보·통신 계열 전문 교과(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가 출력된다. }