ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ญ ๊ตฌ์กฐ์ฒด์ ๊ฐ๋
๐ฌ ๊ตฌ์กฐ์ฒด(struct)
โ ์๋ก ๋ค๋ฅธ ์๋ฃํ์ ๊ฐ๋ ์๋ฃ๋ค์ ๋ชจ์ โจ ํ๋์ ์๋ฃํ์ผ๋ก ์ ์ํด ์ฌ์ฉํ๋ ์๋ฃํ
โ ๊ตฌ์กฐ์ฒด โจ ์ฌ์ฉ์ ์ ์ ์๋ฃํ
• ๋ค์ํ ํ์์ ์๋ฃ๋ฅผ ๊ฐ๊ฒฐํ ํ์์ผ๋ก ํํ ๊ฐ๋ฅ
• ์ฌ์ฉ์๊ฐ ์๋ก์ด ํ์์ ์ ์ํ์ฌ ์ฌ์ฉํ ์ ์๋ค
๐ฌ ๊ตฌ์กฐ์ฒด์ ํ์์ฑ
๐ญ ๊ตฌ์กฐ์ฒด์ ์ ์์ ๋ณ์ ์ ์ธ
๐ฌ ๊ตฌ์กฐ์ฒด์ ์ ์
๐ฌ ๊ตฌ์กฐ์ฒด ๋ณ์์ ์ ์ธ
[ ๊ตฌ์กฐ์ฒด ์ ์์ ๋ณ์ ์ ์ธ ์ 1 ]
[์ค์ ์๋ฃ ํํ]
ํ๋ฒ : 2102
์ด๋ฆ : ํ๊ธธ๋
๊ตญ์ด : 70
์์ด : 85
์ํ : 80
๊ตญ์ฌ : 90
โผ
[๊ตฌ์กฐ์ฒด๋ก ์ ์]
struct score {
char no[4];
char name[8];
int kor;
int eng; // ๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ
int math;
int hist;
};
struct score X, Y; // ๊ตฌ์กฐ์ฒด ๋ณ์ X, Y ์ ์ธ
[ ๊ตฌ์กฐ์ฒด ์ ์์ ๋ณ์ ์ ์ธ ์ 2 ]
// ๊ตฌ์กฐ์ฒด ๋ณ์๋ฅผ ์ ์ธํ๋ ๋ฐฉ๋ฒ์ด ์์ ์ 1๊ณผ ์์ดํจ
struct score{
char no[4];
char name[8];
int kor;
int eng;
int math;
int hist;
} X, Y;
// X, Y๋ struct score์ ๊ตฌ์กฐ์ฒด ๋ณ์
[ ๊ตฌ์กฐ์ฒด ์ ์์ ๋ณ์ ์ ์ธ ์ 3 ]
โ typedef ์ฌ์ฉ (์๋ก์ด ์๋ฃํ์ผ๋ก ์ ์)
typedef struct score{
char no[4];
char name[8];
int kor;
int eng;
int math;
int hist;
} jumsu; // ๊ตฌ์กฐ์ฒด score๋ฅผ jumsu๋ผ๋ ์ ์๋ฃํ์ผ๋ก ์ ์
jumsu X, Y; // ์ ์๋ฃํ jumsu์ ๋ณ์ X, Y ์ ์ธ
๐ญ ๊ตฌ์กฐ์ฒด ๋ณ์์ ์ด๊ธฐํ ๋ฐ ์ฐธ์กฐ
๐ฌ ๊ตฌ์กฐ์ฒด ๋ณ์์ ์ด๊ธฐํ
struct person{
char name[8];
int age;
char sex;
};
struct person X = {"ํ๊ธธ๋", 20, 'M'};
struct person{
char name[8];
int age;
char sex;
} X = {"ํ๊ธธ๋", 20, 'M'};
๐ฌ ๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ์ ์ฐธ์กฐ
[ ๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ์ ์ฐธ์กฐ ์ 1 ]
#include <stdio.h>
#include <string.h>
struct person {
char name[8];
int age; // personํ ๊ตฌ์กฐ์ฒด ์ ์ธ
char sex;
};
void main(){
struct person X = {"ํ๊ธธ๋", 30, 'M'}; // ๊ตฌ์กฐ์ฒด ๋ณ์ X ์ ์ธ๊ณผ ์ด๊ธฐํ
struct person Y; // ๊ตฌ์กฐ์ฒด ๋ณ์ Y ์ ์ธ
// ๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ์ ๊ฐ ๋์
strcpy(Y.name, "์๋๋"); // ๋ฌธ์์ด ์ฒ๋ฆฌ ์ ๋ฌธ์์ด ๋ณต์ฌ ํจ์ strcpy() ์ฌ์ฉ
Y.age = 28;
Y.sex = 'F';
}
๐ฌ ๊ตฌ์กฐ์ฒด์ ๊ธฐ์ต๊ณต๊ฐ ๊ตฌ์กฐ
[ ๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ์ ์ฐธ์กฐ ์ 2 ]
๐ญ ๊ตฌ์กฐ์ฒด ๋ฐฐ์ด
๋์ผํ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋ ๊ตฌ์กฐ์ฒด ๋ณ์๊ฐ ์ฌ๋ฌ ๊ฐ ์ฌ์ฉ๋ ๋
๊ทธ ๊ตฌ์กฐ์ฒด ๋ณ์๋ค์ ๋ํํ๋ ๋ฐฐ์ด๋ช
์ ์ค์ ํด ์ผ๋ฐ ๋ฐฐ์ด์ฒ๋ผ ์ฌ์ฉ
๐ฌ ๊ตฌ์กฐ์ฒด ๋ฐฐ์ด์ ์
โ 3๋ช ์ ๊ฐ์ธ ์ ์์ ๋ณด๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๊ตฌ์กฐ์ฒด ๋ฐฐ์ด ์ ์ธ
๐ฌ ๊ตฌ์กฐ์ฒด ๋ฐฐ์ด์ ๊ธฐ์ต๊ณต๊ฐ ํํ
์ผ๋ฐ ๋ฐฐ์ด ์ค 2์ฐจ์ ๋ฐฐ์ด๊ณผ ๊ฐ์ ๊ฐ๋ ์ด๋ค.
โซ array[3] ์์ ์ซ์๋ ํ์ ๋ํ๋
๐ฌ ๊ตฌ์กฐ์ฒด ๋ฐฐ์ด์ ์ด๊ธฐํ
// ์์ ๊ตฌ์กฐ์ฒด ์ ์๊ฐ ๋์๋ค๋ ๊ฐ์ ํ์
struct person X[3] =
{{"ํ๊ธธ๋", 20, 'M'},
{"ํฉ์ง์ด", 22, 'F'},
{"์๊บฝ์ ", 30, 'M'}}
โข 3 x 3 ์ด 9๊ฐ์ 2์ฐจ์ ๋ฐฐ์ด๋ก ์ด๊ธฐํ๊ฐ ๋๋ค
โข X[3] ์ผ๋ก ์ ์๋ฅผ ํ๊ธฐ ๋๋ฌธ์ X[0], X[1], X[2]
๐ฌ ๊ตฌ์กฐ์ฒด ๋ฐฐ์ด์ ๋ฉค๋ฒ ์ฐธ์กฐ
[ ๊ตฌ์กฐ์ฒด ๋ฐฐ์ด์ ์ฌ์ฉ ์ ]
#include <stdio.h>
void main(){
struct person {
char *name;
int age;
char sex;
};
// [3] : 3๊ฐ ํ์ ์๋ฏธ
struct person X[3] = {{"ํ๊ธธ๋", 20, 'M'},
{"ํฉ์ง์ด", 22, 'F'}, // ๊ตฌ์กฐ์ฒด ๋ฐฐ์ด ์ด๊ธฐํ
{"์๊บฝ์ ", 30, 'M'}};
int i, sum = 0;
for (i = 0; i < 3; i++){
printf("์ด๋ฆ : %s ๋์ด : %d ์ฑ๋ณ : %c\n",
X[i].name, X[i].age, X[i].sex); // ๊ตฌ์กฐ์ฒด ๋ฐฐ์ด์ ๋ฉค๋ฒ๋ฅผ ์ฐธ์กฐ
sum = sum + X[i].age;
}
printf("๋์ดํฉ : %d", sum);
}
๐ญ ๊ตฌ์กฐ์ฒด ํฌ์ธํฐ
ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํด ๊ตฌ์กฐ์ฒด๋ฅผ ๋ค๋ฃฐ ์ ์๊ฒ ํจ
• ๊ตฌ์กฐ์ฒด๋ฅผ ๋ณด๋ค ์ฝ๊ฒ ๋ค๋ฃฐ ์ ์๋ค
• ๊ตฌ์กฐ์ฒด ๋ณ์ ์ ์ธ ์ *๋ฅผ ๋ถ์ฌ ํฌ์ธํฐ๋ก ์ ์ธ
• ๊ตฌ์กฐ์ฒด ํฌ์ธํฐ๋ ํฌ์ธํฐ์ ๋์ผํ๊ฒ ์ฃผ์๊ฐ์ ๊ฐ์ง๋ฉฐ, ์๋ฃ๊ฐ ์๋ ๊ณณ์ ๊ฐ๋ฆฌํจ๋ค.
๐ฌ ๊ตฌ์กฐ์ฒด ํฌ์ธํฐ์ ์ ์ธ
[ ๊ตฌ์กฐ์ฒด ํฌ์ธํฐ ์ ์ธ ์ ]
struct person {
char name[8];
int age;
char sex;
}
struct person man;
struct person *pt;
pt = &man; // ์ ์ ์๋ ๊ตฌ์กฐ์ฒด ๋ณ์ man์ ์์ ์ฃผ์
๐ฌ ๊ตฌ์กฐ์ฒด ํฌ์ธํฐ์ ๊ธฐ์ต๊ณต๊ฐ ํํ ์
๐ฌ ๊ตฌ์กฐ์ฒด ํฌ์ธํฐ์ ๋ฉค๋ฒ ์ฐธ์กฐ
[ ๊ตฌ์กฐ์ฒด ํฌ์ธํฐ์ ์ฌ์ฉ ์ ]
#include <stdio.h>
struct student {
char name[10];
int kor; student ๊ตฌ์กฐ์ฒด๋ฅผ ๊ตฌ์ฑํ๋ ๋ฉค๋ฒ 3๊ฐ
int math;
};
void main() {
// 4ํ(๊ตฌ์กฐ์ฒด ๊ฐ์) 3์ด(๋ฉค๋ฒ)
struct student hs[4] = {{"KIM HG", 90, 95}, {"LEE SY", 85, 90},
{"PARK GS", 70, 85}, {"CHOI HJ", 95, 75}};
struct student *p;
p = hs; // ๊ตฌ์กฐ์ฒด ๋ฐฐ์ด ๋ณ์ hs์ ์์ ์ฃผ์ p[0] ๊ฐ๋ฆฌํด
// P[0] : KIM HG 90, 95
printf("%s %d %d\n", p -> name, p -> kor, p -> math);
p += 3; // p[3] : CHOI HJ 95 75
printf("%s %d %d\n", p -> name, p -> kor, p -> math);
p--; // p[2] : PARK GS 70 85
printf("%s %d %d\n", p -> name, p -> kor, p -> math);
}
โผ ํ๋ก๊ทธ๋จ ์คํ ๊ณผ์ (๊ธฐ์ต๊ณต๊ฐ ํํ)
'๐ซ๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ์ด์ฌํ๋ก๊ทธ๋๋ฐ๊ธฐ์ด] 12. ํ์ผ (0) | 2024.05.19 |
---|---|
[Cํ๋ก๊ทธ๋๋ฐ] 12. ๊ตฌ์กฐ์ฒด์ ๊ณต์ฉ์ฒด โก (0) | 2024.05.09 |
[ํ์ด์ฌํ๋ก๊ทธ๋๋ฐ๊ธฐ์ด] 11. ๋ชจ๋ (0) | 2024.05.06 |
[ํ์ด์ฌํ๋ก๊ทธ๋๋ฐ๊ธฐ์ด] 10. ๊ฐ์ฒด์งํฅ (0) | 2024.05.04 |
[Cํ๋ก๊ทธ๋๋ฐ] 10. ๋ฐฐ์ด๊ณผ ํฌ์ธํฐ โข (1) | 2024.05.02 |