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}};위의 네 형태 모두 가능하다.