본문 바로가기
Zig

[Zig] 구조체(structs)

by 코드쉼터 2024. 3. 21.

구조체를 정의하는 방법은 다음 같습니다.

---------------------------------------------------------------------------------------------------

 const 구조체 이름 = extern packed struct

 {

     구조체 요소 이름 : 자료형

 };

 

정의 방법은 열거형과 유사하지만, 여러가지 자료형을 한꺼번에 담을 수 있습니다.

extern 은 C 언어로 만들어진 라이브러리를 사용할 때 C 언어 함수와 호환성을 위해 선택적으로 붙이는 키워드입니다.

packed 는 byte padding 없이 메모리 레이아웃을 정의한 순서 그대로 만들고 싶을때 선택적으로 붙이는 키워드입니다.

---------------------------------------------------------------------------------------------------

 

예시

// 게임 캐릭터의 직업을 열거형으로 정의했습니다.

const Class = enum    // 직업
{
    wizard,
    thief,
    bard,
    warrior,
};

 

// 캐릭터가 가질 속성들을 묶어 구조체로 정의했습니다.
const Character = struct 
{
    class : Class,    // 직업
    gold : u32,
    health : u8,
    experience : u32,
};

 

// 정의해둔 구조체를 활용해 마법사 캐릭터 개체를 만들었습니다.
var my_character : Character = Character
{
    .class = Class.wizard,
    .gold = 20,
    .health = 100,
    .experience = 10,
};

 

// 구조체로 만든 개체의 요소에 접근하여 값을 수정할 수 있습니다.

my_character.health = 50;

 

 

 

'Zig' 카테고리의 다른 글

[Zig] 옵셔널(optionals)  (0) 2024.03.21
[Zig] 포인터(pointers)  (0) 2024.03.21
[Zig] 열거형(enums)  (0) 2024.03.21
[Zig] 도달 불가능(unreachable)  (0) 2024.03.21
[Zig] switch 조건문(statement)  (0) 2024.03.21