C 구조체 기본 - sonkoni/Koni-Wiki GitHub Wiki
구조체 정의 끝에는 반드시 세미콜론(;) 이 있어야 한다.
== 구조체 정의 ==
struct 구조체이름 {
자료형 멤버이름;
};
== 구조체 선언 ==
struct 구조체이름 변수이름;
struct 구조체이름 변수이름 = {.멤버이름1 = 값1, .멤버이름2 = 값2};
struct 구조체이름 변수이름 = {순서대로멤버값1, 순서대로멤버값2};
== 구조체 멤버 접근 ==
변수.멤버;
변수.멤버 = 값;#include <stdio.h>
#include <string.h> /* srtcpy */
struct Person {
char name[20];
int age;
char address[100];
};
int main(int argc, char *argv[]) {
struct Person p1;
// 구조체 멤버 할당은 . 으로 한다.
// 스칼라는 = 로 할당 가능.
// 문자열은 함수 써서 할당해야 함. 포인터니까.
strcpy(p1.name, "Leonardo DiCaprio");
p1.age = 47;
strcpy(p1.address, "Hollywood, USA");
// 구조체 멤버 접근 시 . 으로 한다.
printf("name : %s\n", p1.name);
printf("age : %d\n", p1.age);
printf("address : %s\n", p1.address);
return 0;
}
// name : Leonardo DiCaprio
// age : 47
// address : Hollywood, USA닫는 중괄호와 세미콜론 사이에 변수를 지정해줄 수 있다.
#include <stdio.h>
#include <string.h> /* srtcpy */
struct School {
char name[20];
int age;
} scVal; // 구조체를 만드면서 변수 할당: 함수 밖에 있으니 전역변수이다.
int main(int argc, char *argv[]) {
strcpy(scVal.name, "Hankook Univ.");
scVal.age = 100;
printf("name : %s\n", scVal.name);
printf("age : %d\n", scVal.age);
return 0;
}
// name : Hankook Univ.
// age : 100struct 구조체이름 변수이름 = {.멤버이름1 = 값1, .멤버이름2 = 값2};
struct 구조체이름 변수이름 = {순서대로멤버값1, 순서대로멤버값2};
리터럴로 바로 할당된다. 그래서 strcpy 이런 거 필요없다.
#include <stdio.h>
struct Person {
char name[20];
int age;
char address[100];
};
int main(int argc, char *argv[]) {
// 점(.)으로 접근해 초기 할당하는 것은 순서 상관없다. 빼먹어도 된다.
struct Person p1 = {.age = 47, .address = "Hollywood, USA", .name = "Leonardo DiCaprio"};
// 그냥 쌩으로 나열해서 넣는 것은 정의 순서대로 넣어야 한다. 중간에 일부 아이템을 빠뜨리면 안 된다.
struct Person p2 = {"Dwayne Johnson", 50, "Hollywood, USA"};
printf("1 => %s, %d, %s\n", p1.name, p1.age, p1.address);
printf("2 => %s, %d, %s\n", p2.name, p2.age, p2.address);
return 0;
}
// 1 => Leonardo DiCaprio, 47, Hollywood, USA
// 2 => Dwayne Johnson, 50, Hollywood, USA