105. 구조체

alpaka·2024년 1월 31일
0

정보처리기사

목록 보기
109/161
post-thumbnail

구조체의 개요

  • 배열이 자료의 형과 크기가 동일한 변수의 모임이라면 구조체는 자료의 종류가 다른 변수의 모임이라고 할 수 있다. 예를 들어 이름, 직위, 급여 등의 필드가 필요한 사원 자료를 하나의 단위로 관리하려면 문자와 숫자가 혼용되므로 배열로는 처리할 수 없다. 이런 경우 구조체를 사용하면 간단하게 처리할 수 있다.

구조체의 정의

  • 구조체를 정의한다는 것은 int나 char 같은 자료형을 하나 만드는 것을 의미한다.
  • 구조체는 'structure(구조)'의 약어인 'struct'를 사용하여 정의한다.
struct sawon {
  char name[10];
  char jikwi[10];
  int pay;
};
  • struct: 구조체를 정의하는 예약어이다. 그대로 적으면 된다.
  • sawon: 구조체의 이름으로 사용자가 임의로 정한다. 이렇게 정의하면 sawon이라는 자료형이 하나 생긴 것이다.
  • 멤버: 일반 변수를 선언하는 것과 동일하게 필요한 필드들을 임의로 선언하면 된다(name[10], jikwi[10], pay)

구조체 변수 선언

  • 정수형 변수를 사용하려면 'int a'와 같이 선언한 후 사용하는 것처럼 구조체 변수를 사용하려면 먼저 정의한 구조체에 대한 변수를 선언해야 한다.
  • 예: struct sawon ansan, *seoul;
    • struct: 구조체 변수를 선언하는 예약어이다. 그대로 적으면 된다.
    • sawon ansan: 정의한 구조체 sawon 자료형으로 변수를 선언하는데 변수의 이름은 ansan이라는 의미이며, 사용자가 임의로 정하면 된다.
    • seoul: 구조체의 포인터 변수다. 'struct sawon seoul'과 같이 별도로 지정할 수도 있다.

구조체 멤버의 지정

  • 구조체의 멤버는 모든 요소들이 개별적인 이름을 가지고 있으므로 구조체 멤버를 지정할 때는 구조체 변수와 함께 멤버 이름을 지정해야 한다.
  • '.'의 의한 지정: 구조체 일반 변수를 이용해 구조체 멤버를 지정할 때
ansan.name = "김한국";
ansan.jikwi = "대리";
ansan.pay = 4000000;
  • '->'에 의한 지정: 구조체 포인터 변수를 이용해 구조체 멤버를 지정할 때
seoul->name = "홍길동";
seoul->jikwi = "과장";
seoul->pay = 5000000;
  • 구조체의 포인터 변수는 일반 포인터 변수처럼 *를 사용하여 멤버를 지정할 수도
    있다.
(*seoul).name = "홍길동";
(*ansan).jikwi = "과장";
(*ansan).pay = 5000000;
profile
alpaka의 자격증 공부장

0개의 댓글

관련 채용 정보