C 구조체 활용 구조체멤버 - sonkoni/Koni-Wiki GitHub Wiki

구조체 멤버로 구조체를 사용

구조체 멤버로 공용체가 와도 형태는 동일하다.

#include <stdio.h>
#include <string.h>  /* strcpy */

struct Phone {
    int code;
    unsigned int num;
};

struct Person {
    char name[20];
    int age;
    struct Phone ph;  // Phone 구조체 가 ph 라는 멤버 이름으로 선언됨.
};

int main(int argc, char *argv[]) {
    struct Person p1;
    
    strcpy(p1.name, "Kim");
    p1.age = 20;
    p1.ph.code = 82;
    p1.ph.num = 23689283;
    
    printf("%s(%d) : %d-%u\n", p1.name, p1.age, p1.ph.code, p1.ph.num);
    return 0;
}
// Kim(20) : 82-23689283

만약 Phone 구조체를 다른데서 쓰지 않고 오직 Person 구조체 안에서만 쓴다면 다음과 같이 선언하고 변수 ph 를 잡아도 된다.

struct Person {
    char name[20];
    int age;
    // 아래의 경우 반드시 구조체 뒤에 변수를 선언해야 함
    struct Phone {
        int code;
        unsigned int num;
    } ph; // 변수 선언
};

만약 구조체 멤버 값을 바로 할당하고 싶으면 다음처럼 하면 된다.

    // struct Person p1;
    // strcpy(p1.name, "Kim");
    // p1.age = 20;
    // p1.ph.code = 82;
    // p1.ph.num = 23689283;

struct Person p1 = {.name = "Kim", .age = 20, .ph = {.code = 82, .num = 23689283}};
struct Person p1 = {.name = "Kim", .age = 20, {.code = 82, .num = 23689283}};
struct Person p1 = {"Kim", 20, {.code = 82, .num = 23689283}};
struct Person p1 = {"Kim", 20, {82, 23689283}};

위의 네 형태 모두 가능하다.

⚠️ **GitHub.com Fallback** ⚠️