C์–ธ์–ด

[C์–ธ์–ด] ๊ตฌ์กฐ์ฒด ํ™œ์šฉ๊ณผ ํฌ์ธํ„ฐ ์—ฐ์‚ฐ - ๋ฐ์ดํ„ฐ ๊ทธ๋ฃนํ™”์™€ ์œ ์—ฐํ•œ ๋ณ€์ˆ˜ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•

hyonie 2024. 4. 15. 00:40

1๏ธโƒฃ ๊ตฌ์กฐ์ฒด ์„ ์–ธ๊ณผ ์‚ฌ์šฉ โœจ

๊ตฌ์กฐ์ฒด๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ๋ณ€์ˆ˜๋“ค์„ ๋ฌถ์–ด์„œ ์ƒˆ๋กœ์šด ์ž๋ฃŒํ˜•์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. 

์ด๋ฅผ ํ†ตํ•ด ์—ฐ๊ด€๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด์„œ ๊ด€๋ฆฌ ํ• ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ•™์ƒ ์ •๋ณด๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ตฌ์กฐ์ฒด๋Š” ์ด๋ฆ„, ๋‚˜์ด, ํ‚ค ๋“ฑ์˜ ๋ณ€์ˆ˜๋“ค๋กœ ์ด๋ฃจ์–ด์งˆ์ˆ˜ ์žˆ๋‹ค.

 

๊ตฌ์กฐ์ฒด ์‚ฌ์šฉํ•˜๊ธฐ

๊ตฌ์กฐ์ฒด๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ ์ƒˆ๋กœ์šด ์ž๋ฃŒํ˜•์œผ๋กœ, ๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.

๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ๋Š” ์ง์ ‘ ์ ‘๊ทผํ•˜์—ฌ ๊ฐ’์„ ํ• ๋‹นํ•˜๊ฑฐ๋‚˜ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์กฐ์ฒด์— ๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

โน ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•

struct student
{
    char name[10];
    int age;
    int height;
};

int main(void)
{
    struct student st1;
    struct student st2;
}

 

โน ๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ• 

struct student
{
    char name[10];
    int age;
    int height;
} st1, st2;

 


์„ ์–ธ๋œ ๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜์˜ ํ˜•ํƒœ๋Š” ์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๊ฐ๊ฐ 18Byte์˜ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, name, age, height 3๊ฐ€์ง€ ๋ฉค๋ฒ„๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

2๏ธโƒฃ ๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ„ ์ ‘๊ทผโœจ

๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉค๋ฒ„์˜ ๊ฐ’์„ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ฃผ๋กœ ์ง์ ‘์ ‘๊ทผ(.) ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ํฌ์ธํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ„์ ‘์ (->)์œผ๋กœ ์ ‘๊ทผํ• ์ˆ˜ ์žˆ๋‹ค.

๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ„์— ์ง์ ‘ ์ ‘๊ทผ

st1.age = 23;
st1.height = 167;
strcpy(st1.name, "Kim");

 

์œ„์— ์ฝ”๋“œ๋Š” st1 ๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜์˜ ๋ฉค๋ฒ„์ธ age, height, name์— ๊ฐ๊ฐ ๊ฐ’์„ ํ• ๋‹นํ•˜๊ณ  ์žˆ๋‹ค.

 

ํฌ์ธํ„ฐ๋ฅผ ํ†ตํ•œ ๊ฐ„์ ‘ ์ ‘๊ทผ

๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜๋ฅผ ํฌ์ธํ„ฐ๋กœ ์‚ฌ์šฉํ•  ๋•Œ์—๋Š” ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ตฌ์กฐ์ฒด์˜ ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•œ๋‹ค. ์ด๋•Œ์—๋Š” ํ™”์‚ดํ‘œ ๊ฐ„์ ‘์ฐธ์กฐ(->) ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

struct student
{
    char name[10];
    int age;
    int height;
}st, *pSt;

int main(void)
{
    pSt = &st;
    strcpy(pSt -> name, "ํšจ๋‹ˆ");
    pSt -> age = 23;
    pSt -> height = 167;
    
    printf("์ด๋ฆ„: %s, ๋‚˜์ด: %d, ํ‚ค: %d\n", pSt->name, pSt->age, pSt->height);

    return 0;
}

 

์œ„ ์ฝ”๋“œ๋Š” pSt ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๊ฐ€ st ๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ , ํฌ์ธํ„ฐ๋ฅผ ํ†ตํ•ด ๊ตฌ์กฐ์ฒด์˜ ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•˜์—ฌ ๊ฐ’์„ ๋ณ€๊ฒฝํ•œ๋‹ค.

๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜๋ฅผ ํฌ์ธํ„ฐ๋กœ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ํฌ์ธํ„ฐ๊ฐ€ ์œ ํšจํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ž˜๋ชป๋œ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์œผ๋กœ ์ธํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ• ์ˆ˜ ์žˆ๋‹ค.

 

3๏ธโƒฃ ๊ตฌ์กฐ์ฒด ๋ฐฐ์—ด โœจ

๊ตฌ์กฐ์ฒด๋Š” ์ž๋ฃŒํ˜•์œผ๋กœ์จ ๋ฐฐ์—ดํ˜•์œผ๋กœ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์˜ ์ •๋ณด๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜๋ฅผ ๋ฐฐ์—ด๋กœ ์„ ์–ธํ• ์ˆ˜ ์žˆ๋‹ค.

struct student
{
    char name[10];
    int age;
    double height;
} st[5];


๋˜๋Š”

student st[5]; // st์ด๋ฆ„์œผ๋กœ 5๊ฐœ ๋ฐฐ์—ด ์„ ์–ธ


๐Ÿ“ ๊ตฌ์กฐ์ฒด ๋ฐฐ์—ด ์ฝ”๋“œ

#include <stdio.h>
#include <string.h>

struct student
{
    char name[10];
    int age;
    double height;
} st[4] = {
    {"ํšจ๋‹ˆ", 23, 166.9},
    {"์ง€์„ ", 22, 159.5},
    {"์€์ง€", 23, 166},
    {"์ง€์ธ„", 23, 167.3}
};

int main(void)
{
    int i;
    printf("๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ„์˜ ์ดˆ๊ธฐ๊ฐ’ ์ถœ๋ ฅ\n");
    for(i = 0; i < sizeof(st)/sizeof(st[0]); i++)
    {
        printf("์ด๋ฆ„: %s, ๋‚˜์ด: %d, ํ‚ค: %.2f\n", st[i].name, st[i].age, st[i].height);
    }
    
    st[1].height = 161;
    printf("\n๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ํ›„\n");
    printf("์ด๋ฆ„: %s, ๋‚˜์ด: %d, ํ‚ค: %.2f\n", st[1].name, st[1].age, st[1].height);

    return 0;
}

 

์œ„ ์ฝ”๋“œ๋Š” ๊ฐ ๊ตฌ์กฐ์ฒด์˜ ๋ฉค๋ฒ„์˜ ์ดˆ๊ธฐ๊ฐ’์„ ์„ค์ •ํ•œ ํ›„, ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ ์ดˆ๊ธฐ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฐฐ์—ด์˜ ํ•œ ์š”์†Œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•œ ํ›„ ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

4๏ธโƒฃ ๊ตฌ์กฐ์ฒด ํฌ์ธํ„ฐ: ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ โœจ

๊ตฌ์กฐ์ฒด๋Š” ์ž๋ฃŒํ˜•์ด๋ฏ€๋กœ ํฌ์ธํ„ฐํ˜•์œผ๋กœ ์„ ์–ธ ํ• ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๊ณ , ํ•ด๋‹น ์ฃผ์†Œ๋ฅผ ํ†ตํ•ด ๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•  ์ˆ˜์žˆ๋‹ค. ํฌ์ธํ„ฐ๋ฅผ ํ†ตํ•ด ๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•  ๋•Œ๋Š” ๊ฐ„์ ‘ ์ ‘๊ทผ ์—ฐ์‚ฐ์ž (->)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

๊ตฌ์กฐ์ฒด ํฌ์ธํ„ฐ ์„ ์–ธ

๊ตฌ์ดˆ์ฒด๋ฅผ ํฌ์ธํ„ฐ๋กœ ์„ ์–ธํ•  ๋–„๋Š” ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์˜ ํ˜•ํƒœ๋ฅผ ๋”ฐ๋ฅด๊ณ , ๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ๋œ๋‹ค.

struct student *pSt; // *pSt 4Byte ์ฐจ์ง€

 

๊ตฌ์กฐ์ฒด ํฌ์ธํ„ฐ ์ฝ”๋“œ

#include <stdio.h>
#include <string.h>

struct student
{
    char name[10];
    int age;
    double height;
} st[4] = {
    {"ํšจ๋‹ˆ", 23, 166.9},
    {"์ง€์„ ", 22, 159.5},
    {"์€์ง€", 23, 166},
    {"์ง€์ธ„", 23, 167.3}
};

int main(void)
{
    int i;
    struct student *pSt;
    pSt = st;
    printf("๊ตฌ์กฐ์ฒด ๋ฐฐ์—ด ๋ฉค๋ฒ„์˜ ์ดˆ๊ธฐ๊ฐ’ ์ถœ๋ ฅ\n");
    for(i = 0; i < sizeof(st)/sizeof(st[0]); i++)
    {
        printf("์ด๋ฆ„: %s, ๋‚˜์ด: %d, ํ‚ค: %.2f\n", st[i].name, st[i].age, st[i].height);
    }
    
    printf("\n๊ตฌ์กฐ์ฒด ํฌ์ธํ„ฐ๋ฅผ ์ด์šฉํ•œ ์ถœ๋ ฅ\n");
    for(i = 0; i < sizeof(st)/sizeof(st[0]); i++)
    {
        printf("์ด๋ฆ„: %s, ๋‚˜์ด: %d, ํ‚ค: %.2f\n", (pSt + i)->name, (pSt + i)->age, (pSt + i)->height);
    }
    
    return 0;
}

 


์œ„ ์ฝ”๋“œ๋Š” ๊ตฌ์กฐ์ฒด ํฌ์ธํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌ์กฐ์ฒด ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ pSt๊ฐ€ ๊ตฌ์กฐ์ฒด ๋ฐฐ์—ด st์˜ ์ฒซ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ , ์ด๋ฅผ ํ†ตํ•ด ๊ฐ ์š”์†Œ์˜ ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•œ๋‹ค.

 

5๏ธโƒฃ ๊ตฌ์กฐ์ฒด ์ดˆ๊ธฐํ™”

์ผ๋ฐ˜์  ์ดˆ๊ธฐํ™” ๋ฐฉ๋ฒ•

๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜์˜ ๊ฐ ๋ฉค๋ฒ„์— ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

์ด ๋ฐฉ๋ฒ•์€ ๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜๋ฅผ ๋จผ์ € ์„ ์–ธ ํ•œ ํ›„์— ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

struct student
{
    char name[10];
    int age;
    int height;
} st;

st.age = 23;
st.height = 167;
strcpy(st.name, "ํšจ๋‹ˆ");

 

 

์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•

๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜๋Š” ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”ํ• ์ˆ˜ ์žˆ๋‹ค. ์ค‘๊ด„ํ˜ธ {} ์•ˆ์— ์ดˆ๊ธฐ๊ฐ’์„ ์ง€์ •ํ•˜์—ฌ ํ•œ๋ฒˆ์— ์กฐ๊ธฐํ™” ํ• ์ˆ˜ ์žˆ๋‹ค. 

struct student
{
    char name[10];
    int age;
    int height;
} st = {"ํšจ๋‹ˆ", 23, 167};

 

๋˜๋Š” ๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋Š” ๋™์‹œ์— ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ์ƒ๋žตํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

struct student
{
    char name[10];
    int age;
    int height;
} = {"ํšจ๋‹ˆ", 23, 167};