반응형
SMALL

학습목표

1. 구조체와 공용체를 이해하고 만들어 볼 수 있다.

2. 구조체와 공용체의 선언/ 정의/ 멤버 참조 방법을 이해할 수 있다.

3. 함수의 인자로 구조체 사용을 이해할 수 있다.

 

주요용어 

구조체, 구조체의선언/정의/멤버참조, 구조체 배열, 함수와 구조체, 공용체의 선언/정의/사용

 

 

7.1 구조체

구조체(structure) :

 - 서로 다른 자료형을 닺는 자료의 모임을 하나의 자료형으로 정의하여 사용하는 자료형

 - 구조체 => 사용자 정의 자료형

   > 다양한 새로운 형식을 정의하여 사용할 수 있다.

 

**10대의 차량에 대항 자료 처리의 경우

일반변수 사용 
char car1_maker[15];
long int car1_km; 
long int car1_cost; 
char car2_maker[15]; 
long int car2_km; 
long int car2_cost; 
         … 
char car10_maker[15]; 
long int car10_km; 
long int car10_cost;
구조체 사용 

struct vehicle 
{ 
   charmaker[15]; 
   longint km; 
   longint cost; 

}car[10];

 

 

 

7.1.1 구조체의 정의와 선언

(1) 구조체의 정의

- 형식 :
   struct 구조체명 {
         멤버 1;
         멤버 2;
         .......
    };
- 사용 예 :
    struct score {
          int kor;
          int eng;
          ...
};

 

(2) 구조체 변수의 선언

 정의된 구조체를 사용하려면 구조체 변수를 선언해야 한다.

구조체 변수는 일반 변수, 배열, 포인터 등의 형태로 다양하게 선언될 수 있다.

- 형식 : struct 구조체명 변수명 1, 변수명 2, 변수명 3;

- 사용 예 : struct score x, y[10], *z;

(3) 구조체 정의와 변수 선언 예

 

 

구조체 변수 X, Y 선언 :

 

  struct score X, Y  

  X, Y;

  jumsu;

  jumsu X, Y; 

 

 

 

 

 

 

7.1.2 구조체의 초기화

 일반 변수와 마찬가지로 구조체의 변수를 선언한 후에는 고조체 변수를 초기화해야 한다.

예 1 )
         struct person{
              char name[8];
              int age;
              char sex;
};
   struct person X = {"홍길동", 20, 'M'};
예 2 )
         struct person{
              char name[8];
              int age;
              char sex;
}X = {"홍길동", 20, 'M'};

 

7.1.3 구조체 멤버의 참조

- 형식 : 구조체 변수명. 멤버명

- 사용 예 : 
               X.name
               X.age
               X.sex

 

//구조체 멤버 참조의 사용

 

#include <stdio.h>

#include <string.h>
struct person{
      char name[8];
      int age;
      char sex;        };

void main(){
      struct person X={"홍길동", 30, 'M'}; // 구조체 변수 X선언, 초기화 
      struct person Y; // 구조체 변수 Y 선언 
      strcpy(Y.name, "임꺽정");
/* 구조체 멤버 Y.name을 참조 ( 문자열 처리할 때에는 문자열 복사 함수 strcpy()를 사용 */

      Y.age = 35;
      Y.sex = 'M';
      printf("X의 정보 : %s, %d, %c \n", X.name, X.age, X.sex);
      printf("Y의 정보 : %s, %d, %c \n", Y.name, Y.age, Y.sex);

      printf("sizeof(person.name) : %dbyte \n", sizeof(X.name));

      printf("sizeof(person.age) : %dbyte \n", sizeof(X.age));

      printf("sizeof(person.sex) : %dbyte \n", sizeof(X.sex));

      printf("sizeof(person) : %dbyte \n", sizeof(X));      }

 

- 구조체의 기억공간 구조

  struct person{

         char name[8];

         int age;

         char sex;

};

struct person X;

 

- 구조체 person 의 크기 

sizeof (struct person) = 16byte 

실제로 메모리가 할당 될 때는 구조체 멤버 중 가장 큰 자료형의 크기로 할당됨. 즉, person.sex 가 char형이지만 멤버 중 가장 큰 int형의 크기인 4byte가 할당

반응형
LIST

+ Recent posts