학습목표
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가 할당
'방송통신대학 > C 프로그래밍' 카테고리의 다른 글
함수function와 구조체struct (2) | 2020.06.13 |
---|---|
구조체 배열struct array (0) | 2020.06.12 |
포인터와 배열 pointer array (0) | 2020.06.10 |
포인터와 배열 char pointer , array (0) | 2020.06.09 |
포인터변수의 선언과 참조 pointer variable Declaration (3) | 2020.06.08 |