- 참치군
- ?
- stalk.io
- :: 2013년, 스리는 여섯살
- 웹 강좌
- 점프 투 파이썬
- 요니나의 대학생 재테크
- This is CS50
- 애자일 이야기
- isao의 IT,게임번역소
- 소프트웨어 이야기
- Color Scripter
- 어디를 가든지 마음을 다해 가라
- VisuAlgo
- 서울대 평생교육원
- 몽환
- RegExr: Learn, Build, & Test R…
- Hello, Stranger :D
- I Like Exploit
- Z3alous Security Story
- Project Euler
- Blog
- pieces of code
- window 쪼물딱 거리기
- IT - Informatics Alphabet
- rop
- 국제 정보교육센터 I2sec 대구 1기
- This is the moment. :)
- blackmoon
- z3alous는 세상에 소리 z3alous~
- Acord
- FORENSIC-PROOF
- 어셈블리
- Outsider's Dev Story
- Open Tutorials
- 코드라이언
- 컴퓨터 그래픽스와 3D 프린팅
- HACKABILITY
- Lee, Jae-Hong
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 추상데이터타입
- 알고리즘
- Visual Studio
- Calling Convention
- 호출규약
- 동대구
- 소켓
- Hello World
- 베이스
- 버퍼오버플로우
- 오지총
- Packet
- 컴파일러
- 블루블랙
- 탈색
- 공간복잡도
- 염색
- Debug
- 디버깅
- 레지스터
- 시간복잡도
- 피보나치
- 발표
- 펌
- 파이썬
- 창의공학설계
- C언어
- Wireshark
- BOF
- ubuntu
- Today
- Total
c0smicb0y
[자료구조] Structure & Union (구조체와 유니언) 본문
구조체
배열은 같은 타입의 데이터의 모임인데 반해 타입이 다른 데이터를 그룹화할 수 있는 방법 중 하나가 구조체(structure)이다.
예를 들어 다음과 같은 선언은
1 2 3 4 | struct { char name[16]; int age; } person; | cs |
이름이 person이고 2개의 필드를 갖는 변수를 생성한다.
char형 배열 name
int형 변수 age
이러한 필드에 아래와 같이 값을 할당할 수 있다.
1 2 | strcpy(person.name,"Jang"); person.age = 20; | cs |
typedef명령문을 사용하여 구조체 데이터 타입을 생성할 수도 있다.
1 2 3 4 | typedef struct human { char name[10]; int age; }; | cs |
혹은
1 2 3 4 | typedef struct { char name[10]; int age; } human; | cs |
human은 구조체 정의를 통해서 정의된 타입 이름으로 변수를 선언할때 처럼 해당 구조체로 선언할 수 있다.
1 | human person1, person2; | cs |
구조체 속에 또 다른 구조체를 정의할 수도 있다. human 구조체 속에 키와 몸무게를 포함하는 physical 구조체를 포함시키고자 할때 다음과 같이 작성한다.
1 2 3 4 5 6 7 8 9 10 | typedef struct { int weight; int height; } physical; typedef struct { char name[16]; int age; physical phy; } human; | cs |
키가 180이고 몸무게가 70인 사람은 다음과 같이 작성할 수 있다.
1 2 | person1.phy.weight = 70; person1.phy.height = 180; | cs |
유니언
유니언은 구조체와 비슷하지만 구조체는 각 필드들이 각각의 공간을 가지는 반면에 유니언은 모든 필드가 같은 공간을 공유한다. 예를 들어 위에서 설명한 human 자료형은 다음과 같은 구조를 가진다.
하지만 동일한 필드값을 가지는 유니언 uperson을 다음과 같이 정의하면
1 2 3 4 | union { char name[16]; int age; } uperson; | cs |
이 자료형은 다음과 같은 구조를 가진다.
age와 name[16]이 서로의 공간을 공유하여 쓰고 있다. 여러가지 특성이 있는데 어떨때는 이게 안쓰이고 저게 쓰이고 어떨때는 이게 쓰이고 저게 안쓰일 경우에 사용한다.
자기 참조 구조체
자기 참조 구조체는 필드 중에 자기 자신을 가리키는 포인터가 하나 이상 존재하는 구조체를 말한다.
1 2 3 4 | typedef struct { int data; struct list *link; } list; | cs |
이를 활용해서 구조체끼리 서로 연결을 만들 수 있다.
이러한 연결에 대해서는 나중에 리스트를 다룰 때 자세히 알아보도록 하자.
'프로그래밍 > 자료구조' 카테고리의 다른 글
[자료구조] Array (배열) (0) | 2015.01.24 |
---|---|
[자료구조] 기본개념 (0) | 2015.01.10 |