구조체
하나 이상의 변수를 그룹화 하여 새로운 자료형을 정의 하는 것을 구조체라 한다.
구조체 안에 변수는 int, char, 배열, 포인터, 또다른 구조체등 어떤 것이든 상관없다.
구조체 정의/선언 방법 |
사람이라는 구조체를 정의 해보자.
구조체 안에 담아야 할 변수는 이름과, 나이 두가지만 정의 해보도록 하겠다.
struct human { char name[50]; // 이름 int age; // 나이 }; |
구조체가 위와 같이 정의 되었으니 선언해서 사용할 준비를 해보자.
... int main(void) { struct human jack, mike; ... return 0; } |
위와같이 human 구조체를 jack, mike 라는 변수 선언을 하므로써 구조체 사용 준비가 완료 되었다.
아래는 구조체 정의와 동시에 선언 방법을 알아보겠다.
struct human { char name[50]; // 이름 int age; // 나이 } jack, mike; |
구조체 변수 사용 방법 |
구조체 선언 변수 jack에 있는 name과 age 값은 어떻게 접근 가능 할까?
jack.age = 10; |
jack 뒤에 . 을 붙인뒤 구조체 안에 정의 되어 있는 변수 age를 접근 했다.
. 를 '멤버 연산자' 혹은 '맴버 접근 연산자'라고 부른다.
구조체 정의 및 선언, 사용방법 내용이 담긴 소스를 보면서 마무리 하겠다.
#include <stdio.h> #include <string.h> struct human { char name[50]; // 이름 int age; // 나이 }; int main() { struct human jack, mike; jack.age = 10; mike.age = 11; memset( &jack.name, 0x00, sizeof(jack.name) ); // 이름 변수 초기화 memset( &mike.name, 0x00, sizeof(mike.name) ); // 이름 변수 초기화 strcpy( jack.name, "jack" ); strcpy( mike.name, "mike" ); printf(" %s is %d year old \n", jack.name, jack.age ); printf(" %s is %d year old \n", mike.name, mike.age ); } |
'프로그램 > C' 카테고리의 다른 글
[C] 줄바꿈 종류 [ 라인피드(LF), 캐리지 리턴(CR)] (0) | 2017.09.27 |
---|---|
[C] 구조체 배열과 포인터 (0) | 2017.07.31 |
[C] 포인터와 상수(const) (0) | 2017.07.23 |
[C] Call-By-Value와 Call-By-Reference (0) | 2017.07.22 |
[C] 포인터와 배열 (0) | 2017.07.19 |