๊ตฌ์กฐ์ฒด
ํ๋์ ํ๋ก๊ทธ๋๋ฐ์์๋ ๊ธฐ๋ณธ ์๋ฃํ(int, long, char, double) ๋ง์ผ๋ก ํ๋ก๊ทธ๋จ์ ๋์์ํค๊ธฐ์๋ ๋ง์ ์ด๋ ค์์ด ์๋ค.
๊ทธ๋์ ๋ฐ์ ํ๊ฒ ๋ ๊ฒ์ด ๋ฐ๋ก ๊ฐ์ฒด์งํฅ์ ๊ฐ์ฒด์ด๋ค.
ํ์ง๋ง ๊ธฐ๋ณธ ์๋ฃํ์์ ๋ฐ๋ก ๊ฐ์ฒด๋ก ๋ฐ์ ํ ๊ฒ์ ์๋๊ณ ๊ฐ์ฒด์ ๊ธฐ๋ณธ ์๋ฃํ ์ฌ์ด์ ์กด์ฌํ๋ ๊ฐ๋ ์ด ๋ฐ๋ก ๊ตฌ์กฐ์ฒด ์ด๋ค
๊ตฌ์กฐ์ฒด์ ๊ธฐ๋ณธ ์ปจ์ ์ Primitive Data type ์ ๋ชจ์ Abstract data type ์ ๋ง๋๋ ๊ฒ์ด๋ค.
์ด๋ ๊ฒ ๊ตฌ์กฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๊ฒ ๋๋ค.
๊ตฌ์กฐ์ฒด ์ฌ์ฉํ๊ธฐ
๊ตฌ์กฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ค๋ ๋ง์ ์ผ๋จ ์ ์ํ๊ณ , ๊ฐ์ ํ ๋นํ๋ค๋ ์๋ฆฌ๋ค.
๊ตฌ์กฐ์ฒด ์ ์ํ๊ธฐ
๊ตฌ์กฐ์ฒด๋ฅผ ์ ์ํ๋ ๋ฐฉ์์๋ ํฌ๊ฒ 3๊ฐ์ง๊ฐ ์กด์ฌํ๋ค.
struct
๋ก ์ ์ํ๊ธฐ- ๋ณ์ ์์ฑํ ๋ struct ํค์๋๋ฅผ ๋ช ์ํด์ผํจ
typedef struct ๊ตฌ์กฐ์ฒด ์ด๋ฆ
- ๊ตฌ์กฐ์ฒด ์์ฑํ ๋ alias ๋ฅผ ์ด์ฉํ๋ฏ๋ก ๋ณ์ ์์ฑํ ๋ struct ๋ฅผ ๋ช ์ํ์ง ์์๋ ๋๋ค.
typedef struct
- ์ต๋ช ๊ตฌ์กฐ์ฒด๋ก ๊ตฌ์กฐ์ฒด ์ด๋ฆ์ ์๋ตํ๊ณ ๋ฐ๋ก alias ๋ก ์ง์ ํ ์ ์๋ค
// ์ ์ ๋ฐฉ์ 1
struct Student {
int id;
char *name;
double score;
};
// ์ ์ ๋ฐฉ์ 2
typedef struct Professor_s {
int id;
char *name;
char major[20];
} Professor;
// ์ ์ ๋ฐฉ์ 3
typedef struct {
int id;
char *name;
char major[20];
} Researcher;
๊ตฌ์กฐ์ฒด๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์์ 3๊ฐ์ง ๋ฐฉ์ ์ค ํ ๊ฐ์ง๋ง ์ฌ์ฉํด๋ ์ข์๋ฐ ๋ณดํต ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ํธ๋ฆฌ์ฑ์ ์ํด 3๋ฒ ์งธ ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
๊ตฌ์กฐ์ฒด์ ๊ฐ ํ ๋นํ๊ธฐ
๊ตฌ์กฐ์ฒด์ ๊ฐ์ ํ ๋นํ๋ ๋ฐฉ์์๋ ํฌ๊ฒ 2๊ฐ์ง๊ฐ ์กด์ฌํ๋ค.
- ์์ฑ๊ณผ ๋์์ ํ ๋นํ๊ธฐ
- ํญ๋ชฉ ์ฐ์ฐ์
.
๊ณผ ๋์ ์ฐ์ฐ์=
๋ฅผ ์ด์ฉํด์ ํ ๋น
#include <stdio.h>
#include <string.h>
struct Student {
int id;
char *name;
double score;
};
typedef struct {
int id;
char *name;
char major[20];
} Professor;
int main() {
/*
* 1. struct ๋ช
์
* 2. ๋ณ์ ์์ฑ๊ณผ ๋์์ ์ด๊ธฐํ
*/
struct Student student = {21, "์ฅO์ต", 4.5};
/*
* 1. struct ํค์๋ ๋ฌด์
* 2. ํญ๋ชฉ ์ฐ์ฐ์ . ๋ฅผ ์ด์ฉํ์ฌ ํ ๋น
*/
Professor professor;
professor.id = 21;
professor.name = "์ฅO์ต";
strcpy(professor.major, "์ ๋ณด๋ณด์");
return 0;
}
๋๊ธ