C Programming Language/C

C์–ธ์–ด ๊ตฌ์กฐ์ฒด์˜ ๋ณ€์ˆ˜, ๋ฐฐ์—ด , ํฌ์ธํ„ฐ, ํ•จ์ˆ˜

567Rabbit 2024. 8. 2. 15:09

 

๊ตฌ์กฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ€์ˆ˜๋“ค์„ ํ•˜๋‚˜๋กœ ๋ฌถ์„ ์ˆ˜ ์žˆ๋‹ค.

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

๊ทธ๋Ÿฌ๋ฏ€๋กœ ๊ตฌ์กฐ์ฒด๋ฅผ ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•˜์—ฌ์•ผ ํ•œ๋‹ค.

 

struct student {
    int number;     // ํ•™๋ฒˆ
    char name[10];  // ์ด๋ฆ„
    double grade;   // ํ•™์ 
};

 

 

๊ตฌ์กฐ์ฒด๋ฅผ ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”?

int main(void){
    struct student s1;  //๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜ ์„ ์–ธ
}

 

 

 

 

๊ตฌ์กฐ์ฒด์™€ ๋ฐฐ์—ด์˜ ์ฐจ์ด์ 

 

๊ตฌ์กฐ์ฒด : ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ๊บผ๋ฒˆ์— ๋ชจ์•„์„œ ์˜๋ฏธ๋‹จ์œ„๋กœ ๋ฌถ์–ด์„œ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ

๋ฐฐ์—ด : ๋ฐฐ์—ด์€ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ์—ฌ๋Ÿฌ ์š”์†Œ๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด ๊ด€๋ฆฌํ•˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ

 

 

 

 

๊ตฌ์กฐ์ฒด์˜ ์ดˆ๊ธฐํ™”

 

- ์ค‘๊ด„ํ˜ธ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ดˆ๊ธฐ๊ฐ’์„ ๋‚˜์—ดํ•œ๋‹ค

struct student {
    int number;
    char name[10];
    double grade;
};
struct student s1 = { 24, "Kim", 4.3 };  // ์ดˆ๊ธฐ๊ฐ’

 

 

 

 

๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ„ ์ฐธ์กฐ

 

s1.grade = 3.8;
struct student {
    int number;
    char name[10];
    double grade;
};

int main(void){

    struct student s;
    
    s.number = 20190001;
    strcpy(s.name, "ํ™๊ธธ๋™");
    s.grade = 4.3
    
    pritnf("ํ•™๋ฒˆ:%d\n", s.number);
    pritnf("์ด๋ฆ„:%s\n", s.name);
    pritnf("ํ•™์ :%f\n", s.grade);
    return 0;
};

 

 

 

 

์˜ˆ์ œ

 

- ๋‘ ์  ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ ๊ตฌํ•˜๊ธฐ

#include <math.h>
struct point {
    int x;
    int y;
};

int main(void)
{
    struct point p1, p2;
    int xdiff, ydiff;
    double dist;
    
    printf("์ ์˜ ์ขŒํ‘œ๋ฅผ ์ž…๋ ฅํ•˜์‹œ์˜ค(x y): ");
    scanf("%d %d", &p1.x, &p1.y);
    
    printf("์ ์˜ ์ขŒํ‘œ๋ฅผ ์ž…๋ ฅํ•˜์‹œ์˜ค(x y): ");
    scanf("%d %d", &p2.x, &p2.y);
    
    xdiff = p1.x - p2.x;
    ydiff = p1.y - p2.y;
    
    dist = sqrt((double( xdiff * xdiff + ydiff * ydiff )));
    
    printf("๋‘ ์  ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋Š” %f์ž…๋‹ˆ๋‹ค.\n", dist);
    return 0;
}

 

 

 

 

๊ตฌ์กฐ์ฒด๋ฅผ ๋ฉค๋ฒ„๋กœ ๊ฐ€์ง€๋Š” ๊ตฌ์กฐ์ฒด (๊ตฌ์กฐ์ฒด ์•ˆ์— ๊ตฌ์กฐ์ฒด ํฌํ•จํ•˜๊ธฐ)

 

struct date {
    int year;
    int month;
    int day;
};

struct student {   //๊ตฌ์กฐ์ฒด ์„ ์–ธ
    int number;
    char name[10];
    struct date dob;  //๊ตฌ์กฐ์ฒด ์•ˆ์— ๊ตฌ์กฐ์ฒด ํฌํ•จ
	double grade;
};

struct student s1  //๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜ ์„ ์–ธ

s1.dob.year = 1983; //๋ฉค๋ฒ„ ์ฐธ์กฐ
s1.dob.month = 03;
s1.dob.day = 29;

 

 

 

 

๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜์˜ ๋Œ€์ž…๊ณผ ๋น„๊ต

 

- ๊ฐ™์€ ๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜๋ผ๋ฆฌ ๋Œ€์ž…์€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋น„๊ต๋Š” ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค

struct point{
    int x;
    int y;
}

int main(void)
{
    struct point p1 = {10, 20};
    struct point p2 = {30, 40};
    
    p2 = p1;  // ๋Œ€์ž… ๊ฐ€๋Šฅ
    
    if(p1 == p2)                     //์ปดํŒŒ์ผ ์˜ค๋ฅ˜!! ๋น„๊ต ๋ถˆ๊ฐ€
    	printf("p1๊ณผ p2์ด ๊ฐ™์Šต๋‹ˆ๋‹ค")
    
    if((p1.x == p2.x) && (p1.y == p2.y)) //์˜ฌ๋ฐ”๋ฅธ ๋น„๊ต
    	printf("p1๊ณผ p2์ด ๊ฐ™์Šต๋‹ˆ๋‹ค")
}

 

 

 

 

 

๊ตฌ์กฐ์ฒด ๋ฐฐ์—ด ์„ ์–ธ

 

 

- ๊ตฌ์กฐ์ฒด ๋ฐฐ์—ด์ด๋ž€ ๊ตฌ์กฐ์ฒด๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋ชจ์€ ๊ฒƒ์„ ๋งํ•œ๋‹ค.

 

struct student {
    int number;
    char name[20];
    double grade;
};

int main(void)
{
    struct student list[100];  //๊ตฌ์กฐ์ฒด์˜ ๋ฐฐ์—ด ์„ ์–ธ
    
    list[2].number = 24;
    strcpy(list[2].name, "ํ™๊ธธ๋™");
    list[2].grade = 4.3;
}

 

 

 

 

๊ตฌ์กฐ์ฒด ๋ฐฐ์—ด์˜ ์ดˆ๊ธฐํ™”

 

struct student list[3] = {
    { 1, "Park", 3.42 },
    { 2, "Kim", 4.31 },
    { 3, "Lee", 2.98 },
};

 

 

 

 

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

 

struct student *p;

struct student s = { 24, "Kim", 4.3 };
struct student *p;

p = &s;

printf("ํ•™๋ฒˆ=%d ์ด๋ฆ„=%s ํ•™์ =%f\n", s.number, s.name, s.grade);
printf("ํ•™๋ฒˆ=%d ์ด๋ฆ„=%s ํ•™์ =%f\n", (*p).number, (*p).name, (*p).grade);

 

 

 

<์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•>

struct student *p;

struct student s = { 24, "Kim", 4.3 };
struct student *p;

p = &s;

printf("ํ•™๋ฒˆ=%d ์ด๋ฆ„=%s ํ•™์ =%f\n", s.number, s.name, s.grade);
printf("ํ•™๋ฒˆ=%d ์ด๋ฆ„=%s ํ‚ค=%f\n", p->number, p->name, p->grade );

 

 

 

 

ํฌ์ธํ„ฐ๋ฅผ ๋ฉค๋ฒ„๋กœ ๊ฐ€์ง€๋Š” ๊ตฌ์กฐ์ฒด

 

struct date{
    int month'
    int day;
    int year;
};

struct student{
    int number;
    char name[20];
    double grade;
    struct date *dob;
};

int main(void)
{
    struct date d = {3, 20, 1980};
    struct student s = {20190001, "Kim", 4.3};
    
    s.dob = &d;
    
    printf("ํ•™๋ฒˆ : %d\n", s.number);
    printf("์ด๋ฆ„ : %s\n", s.name);
    printf("ํ•™์  : %f\n", s.grade);
    printf("์ƒ๋…„์›”์ผ : %d๋…„ %d์›” %d์ผ\n", s.dob->year, s.dob->month, s.dob->day);
	
    return 0;
}

 

 

 

 

 

๊ตฌ์กฐ์ฒด์™€ ํ•จ์ˆ˜

 

1. ๊ตฌ์กฐ์ฒด๋ฅผ ํ•จ์ˆ˜์˜ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ฒฝ์šฐ

 

- ๊ตฌ์กฐ์ฒด์˜ ๋ณต์‚ฌ๋ณธ์ด ํ•จ์ˆ˜๋กœ ์ „๋‹ฌ๋˜๊ฒŒ ๋œ๋‹ค.

- ๋งŒ์•ฝ ๊ตฌ์กฐ์ฒด์˜ ํฌ๊ธฐ๊ฐ€ ํฌ๋ฉด ๊ทธ๋งŒํผ ์‹œ๊ฐ„๊ณผ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์†Œ์š”๋œ๋‹ค.

int equal(struct student s1, struct student s2)
{
    if( s1.number == s2.number )
    	return 1;
    else
    	return 0;
}

int main(void)
{
    sturct student a = {1, "hong", 3.8 };
    sturct student b = {2, "kim", 4.0 };
    if (equal(a, b) == 1 ){
    	printf("๊ฐ™์€ ํ•™์ƒ \n");
    }
    else{
    	printf("๋‹ค๋ฅธ ํ•™์ƒ \n");
    }
}

 

 

 

2. ๊ตฌ์กฐ์ฒด์˜ ํฌ์ธํ„ฐ๋ฅผ ํ•จ์ˆ˜์˜ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ฒฝ์šฐ

 

- ์‹œ๊ฐ„๊ณผ ๊ณต๊ฐ„์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋‹ค

- ์›๋ณธ ํ›ผ์†์˜ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.

int equal(struct student *p1, struct student *p2)
{
    if( p1->number == p2->number )  //ํฌ์ธํ„ฐ๋ฅผ ํ†ตํ•˜์—ฌ ๊ตฌ์กฐ์ฒด์— ์ ‘๊ทผํ•œ๋‹ค
    	return 1;
    else
    	return 0;
}

int main(void)
{
    sturct student a = {1, "hong", 3.8 };
    sturct student b = {2, "kim", 4.0 };
    if (equal(&a, &b) == 1 ){
    	printf("๊ฐ™์€ ํ•™์ƒ \n");
    }
    else{
    	printf("๋‹ค๋ฅธ ํ•™์ƒ \n");
    }
}

 

 

 

 

 

๊ตฌ์กฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ

 

- ๋ณต์‚ฌ๋ณธ์ด ๋ฐ˜ํ™˜๋œ๋‹ค

 

// ๊ตฌ์กฐ์ฒด s๊ฐ€ ๊ตฌ์กฐ์ฒด a๋กœ ๋ณต์‚ฌ๋œ๋‹ค

struct student create()
{
    sturct student s;
    s.number = 3;
    strcpy(s.name "park");
    s.grade=4.0;
    return s;
}

int main(void)
{
    struct student a;
    a = create();
    
    return 0;
}