개요
구조체
구조체란
C언어에서 제공하는 타입 외의 다양하고 복잡한 문제를 해결하기 위한 자신만의 새로운 타입의 정의
여러 타입의 조합이 공통적으로 사용이 될 때 구조체를 활용하면 보다 편하게 작업이 가능하다.
플레이어와 슬라임, 고블린 등에 사용되는 타입 가운데 공통적으로 사용되는 타입을 하나로 구조화 시키면,
각각 타입을 하나씩 선언할 필요 없이 구조체 하나의 선언으로 속성을 만들 수 있다.
구조체의 사용
구조체는 위와 같이 struct를 사용하여 Character 타입을 만들 수 있다.
Character 타입은 HP, attackPower, defense, moveSpeed 등의 정보를 가지고 있는 타입으로 사용될 수 있다.
구조체에 접근하는 연산자
맴버에 접근하기
구조체의 맴버에는 . 을 통해 접근할 수 있다.
포인터를 이용해 접근하기
구조체의 포인터를 통해 맴버에 접근하기 위해서는 두 가지 방법이 있다.
1) 포인터의 역참조의 맴버에 접근한다.
2) -> 연산자를 통해 접근한다.
패딩
구조체는 일반적으로 맴버들의 크기를 합한 크기를 갖는다.
하지만 실제로 구조체는 맴버 접근 빈도를 줄이기 위해 패딩(Padding)이라는 불필요한 공간을 생성한다.
데이터에 바로 문을 열고 들어갈 수 있도록!
때문에 구조체를 만들 때에는 패딩을 줄이기 위해 크기 순서대로 맴버를 배치하는 것이 효과적이다.
또는!
이와 같이 구조체를 최적화 시킬 수 있다.
728x90
'Program > C (C++,C#)' 카테고리의 다른 글
객체지향 프로그래밍 (0) | 2022.05.30 |
---|---|
[C] 스택 프레임과 호출 규약 (0) | 2022.05.30 |
[C] 열거형 ( Enumeration ) (0) | 2022.05.29 |
[C] 문자열 ( String ) (0) | 2022.05.29 |
[C] 포인터 ( Pointer ) (0) | 2022.05.29 |