개요

 


구조체

구조체란

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

+ Recent posts