C언어

[C언어] 구조체(1)

yujin0517 2021. 8. 7. 13:39

구조체

구조체는 반복되는 변수들을 편하게 관리하기 위해서 사용합니다.

변수들의 공통 요소를 찾아 구조체로 묶어 사용하며, 이렇게 만들어진 구조체는 재사용의 목적이 되기도 합니다. 

 

<사용법>

방법①

struct 구조체명 {  //구조체
    데이터타입 변수명1;
    데이터타입 변수명2;
};

void main() {  //메인함수
    struct 구조체명 구조체변수;
    구조체변수.변수명1 = 값1;
    구조체변수.변수명2 = 값2;
}

 

Ex) 방법① : x, y 좌표 출력하기

struct structEx{  //구조체
    int x;  //데이터타입 변수명1;  
    int y;  //데이터타입 변수면2;
};

void main() {  //메인 함수
    struct structEx sE;
    sE.x = 10;  // "구조체변수.멤버변수" 형식으로 초기화
    sE.y = 20;
    
    printf("x : %d, y : %d\n", sE.x, sE.y);
}

방법1 콘솔창

 

방법② 

struct 구조체명 {  //구조체
    데이터타입 변수명1;
    데이터타입 변수명2;
};

void main() {
    struct 구조체명 구조체변수 = {구조체변수.변수명1 = 값1, 구조체변수.변수명2 = 값2};
}

 

Ex) 방법② : A, B 점수와 총합 출력하기

struct structEx{  //구조체
    int scoreA;  //데이터타입 변수명1;  
    int scoreB;  //데이터타입 변수면2;
    int sumAB;
};

void main() {  //메인 함수
    struct structEx sE = {sE.scoreA = 90, sE.scoreB = 100};
    sE.sumAB = sE.scoreA + sE.scoreB;
    printf("scoreA점수 : %d, scoreB점수 : %d\n", sE.scoreA, sE.scoreB);
    printf("점수 총합 : %d\n", sE.sumAB);
}

방법2 콘솔창

 

방법③

struct 구조체명 {  //구조체
    데이터타입 변수명1;
    데이터타입 변수명2;
};

void main() {
    struct 구조체명 구조체변수 = {값1, 값2};
}

 

Ex) 방법③ : 과일 가격과 평균 가격 구하기

struct structEx {
    int priceA;
    int priceB;
    double priceAvg;
};

void main() {
    struct structEx sE = {1000, 1500};
    printf("과일A : %d원, 과일B : %d원\n", sE.priceA, sE.priceB);
    sE.priceAvg = (sE.priceA + sE.priceB) / 2.0 ;
    printf("과일 값 평균 : %.0lf원\n", sE.priceAvg);
}

방법3 콘솔창

 

#typedef 사용하기

=> 타입을 정의한다는 의미 

typedef struct structex {
    데이터타입 변수명1;
    데이터타입 변수명2;
}STRUCTEX;

void main() {
    STRUCTEX 구조체변수;
    구조체변수.변수명1 = 값1;
    구조체변수.변수명2 = 값2;
    ...
}

* "struct structex"를 "STRUCTEX"로 재정의하여 사용할 수 있습니다. 

 

다음 글에서는 구조체 예제로 연습을 더 해보겠습니다.

 

감사합니다!

 

2021.08.07