C 구조체 배열 - sonkoni/Koni-Wiki GitHub Wiki

구조체 배열

구조체 배열 선언
    struct 구조체이름 변수이름[크기];

구조체 배열 멤버 접근
    배열[인덱스].멤버

구조체 배열의 모든 멤버의 값을 0으로 초기화
    struct 구조체이름 변수이름[크기] = {0, };

구조체 배열을 선언하는 동시에 특정 값 할당
    struct 구조체이름 변수이름[크기] = {
        {멤버1 = 값1, 멤버2 = 값2},
        {멤버1 = 값3, 멤버2 = 값4}
    };

    struct 구조체이름 변수이름[크기] = {
        {순서대로값1, 순서대로값2},
        {순서대로값3, 순서대로값4}
    };

구조체 배열 만들기

#include <stdio.h>

struct Point2D {
    int x, y;
};

int main(int argc, char *argv[]) {
    // 크기가 3인 구조체 배열
    struct Point2D p[3];

    // 인덱스로 요소에 접근한 뒤 점으로 멤버에 접근
    p[0].x = 10; p[0].y = 11;
    p[1].x = 20; p[1].y = 21;
    p[2].x = 30; p[2].y = 31;

    // 배열 출력
    printf("[0]: %d %d\n", p[0].x, p[0].y);
    printf("[1]: %d %d\n", p[1].x, p[1].y);
    printf("[2]: %d %d\n", p[2].x, p[2].y);

    return 0;
}
// [0]: 10 11
// [1]: 20 21
// [2]: 30 31

구조체 배열 0으로 초기화

#include <stdio.h>

struct Point2D {
    int x, y;
};

int main(int argc, char *argv[]) {
    struct Point2D k[2] = {0,};  // 모든 요소의 멤버를 0으로 초기화
    printf("=> [0]: %d %d\n", k[0].x, k[0].y);
    printf("=> [1]: %d %d\n\n", k[1].x, k[1].y);
    // => [0]: 0 0
    // => [1]: 0 0
    
    return 0;
}

구조체 배열을 선언하며 특정 값 할당

#include <stdio.h>

struct Point2D {
    int x, y;
};

int main(int argc, char *argv[]) {
    // 순서 바뀌어도 되고, 멤버 누락되어도 됨
    struct Point2D p[2] = {
        {.x = 10, .y = 11},
        {.x = 20, .y = 21}
    };
    printf("=> [0]: %d %d\n", p[0].x, p[0].y);
    printf("=> [1]: %d %d\n\n", p[1].x, p[1].y);
    // => [0]: 10 11
    // => [1]: 20 21
    
    // 순서가 바뀌거나 누락되면 안 되고, 순서대로 전부 할당해야 함.
    struct Point2D h[2] = {
        {10, 11},
        {20, 21}
    };
    printf("=> [0]: %d %d\n", h[0].x, h[0].y);
    printf("=> [1]: %d %d\n\n", h[1].x, h[1].y);
    // => [0]: 10 11
    // => [1]: 20 21
    
    return 0;
}
⚠️ **GitHub.com Fallback** ⚠️