구조체란?
C언어 문법을 배울 때 배열에 대해서 공부한 기억이 있을 것이다
배열은 같은 타입의 변수들의 집합이라고 할 수 있다
그렇다면 타입이 다른 변수들은 어떻게 묶을까?
구조체(structure)는 다른 타입의 변수들의 집합이라고 할 수 있다
구조체를 사용하는 방법은 다음과 같다
//구조체를 정의하는 방법 struct person { char name[10]; int age; float height; ... }; //구조체 변수를 선언하는 방법 struct person a;
보시다시피 person 이라는 구조체의 내부에는
char 문자열과 int형 변수 float형 변수 등 서로 다른 타입의 변수들이 묶여있음을 확인할 수 있다
그리고 typedef 를 사용하면 구조체를 아예 새로운 타입으로 선언할 수 있다
//구조체를 정의하는 방법 typedef struct person { char name[10]; int age; float height; ... } person; //구조체 변수를 선언하는 방법 person a;
struct person 으로 선언해주었던 방식이 person 으로 더 간단하게 선언할 수 있게 되었다
구조체에는 또 다른 구조체를 포함할 수도 있다
typedef struct person { char name[10]; int age; float height; struct birthday; } person; struct birthday { int day; int month; int year; };
구조체의 내용은 어떻게 다룰까?
구조체를 만들었다면 내용도 채워주어야 한다
그러기 위해서는 구조체 내부의 변수들에 접근해주어야 하는데
이때 항목연산자(membership operator), '.' 을 사용한다
strcpy(a.name, "tom"); a.age = 20; a.height = 180.5;
strcpy(변수, "문자열 내용");
을 이용해야 한다.
strcpy 명령문은
#include <string.h> 를 이용하여 헤더 파일을 불러와야 사용가능합니다
구조체 변수는 대입 연사자를 사용하여 같은 내용의 구조체를 만들 수 있다
하지만 비교 연산자를 사용할 시에는 컴파일 오류가 발생한다
구조체의 내용을 비교하기 위해서는 항목 연산자를 사용하여 데이터끼리 비교해야 한다
320x100
'Programming Language > C/C++' 카테고리의 다른 글
[C/C++] strlen 함수, 문자열의 길이 (0) | 2017.04.20 |
---|---|
[C/C++] fflush 함수 (0) | 2017.03.10 |
[C/C++] 동적 메모리 할당 malloc (0) | 2017.02.27 |
[C/C++] 포인터 pointer (0) | 2017.02.26 |
[C/C++] 순환, 재귀 호출 (0) | 2017.02.19 |