* 글 아래의 링크를 들으며 기록한 내용입니다. 링크에서 자세한 내용을 확인하세요. 

 

구조체는 C, C++ 언어 문법 전체에서 가장 중요한 개념

객체지향 언어인 C++은 구조체에서 확장된 클래스를 기반으로 문법이 추가된 것

구조체를 잘 활용하면 가독성이 좋고 효율적인 프로그램이 가능하며, 실무 프로젝트에서 많이 사용함

구조체를 이용하면 내가 원하는 자료형을 만들어 사용할 수 있음 

프로그램이 깔끔하고 편하다고 계속 말씀하심 

 

변수 : 단독주택 ㅋ

int x; // 4평(byte) 짜리 단독주택 1가구 

정수 int, 실수 double, 문자 char, 문자열 char *, 문자열 char 배열 

 

배열 : 같은 평수로 구성된 아파트 ㅋㅋㅋ

int x[5]; // 4평짜리 5가구 

동일한 형(type)의 데이터들을 하나의 단위로 취급 

 

구조체 (변수/배열/구조체들의 모임)

다른 형의 데이터들을 하나의 단위로 취급 

 

ex) 사람형 

- 이름

 : char name[10]

- 나이 

 : int age

- 몸무게 

 : double weight 

struct Man{
    char n;
    int age;
    double weight;
};

 

struct Man 형 구조체를 선언하고 변수를 만들어서 멤버에 접근 

#include <studio.h>

struct Man{    				// 구조체 선언
    int age;				// 멤버
    double weight;			// 멤버
};
int main(void){
    struct Man han;			// struct Man 구조체형 변수 han 선언
    han.age=20;				// 구조체 변수의 멤버 age에 접근(점 사용)
    printf("%d\n", han.age);
    return 0;
}

※ weight 값은 아직 입력 안해서 쓰레기 값 나옴 

 

#include <studio.h>

struct Man{			
    int age;		
    double weight;	
};
int main(void){
    int x;
    x = 10;
    struct Man han;
    han.age = 10;
    han.weight = 30.5;
    print("%d %f", han.age, han.weight);
    
    return 0;
    }

 

프로그램이 깔끔해지고,

연관 변수들을 하나의 묶음으로 관리하면 훨씬 편하게 쓸 수 있다. 

 

예제) struct Man 형 구조체를 선언하고 변수를 만들어서 멤버에 접근 

#include <studio.h>

struct Man{    					// 구조체 선언
    char name[10];				// 멤버
    int age;					// 멤버
    double weight;				// 멤버
};
int main(void){
    struct Man gildong, sunhee, comso[160];
    gildong.age = 20;			// 일반 구조체 변수의 멤버 참조
    sunhee.weight = 52.5;
    comso[0].age = 25;
    printf("%d %f %d\n", gildong.age, sunhee.weight, comso[0].age);
    
    return 0;
    }

결과 ↓

20 52.500000 25

 

 

예제) 구조체 변수의 초기화와 멤버 값 대입

#include <studio.h>

struct score{						// struct score 형. score 형이 아님!!
    char hakbun[10];				
    char name[10];					
    int kor, eng, tot;
    double ave;				
};
int main(void){
    struct score h = {"2020001", "han", 80, 90}; 		// 초기화 
    h.tot = h.kor + h.eng;
    h.ave = h.tot / 2.0;
    printf("%s %s %d %d %d %f\n", h.hakbun, h.name, h.kor, h.eng, h.tot, h.ave);
    return 0;
    }
2020001 han 80 89 169 84.500000

 

 

예제) 구조체 변수들의 대입 연산 

- 구조체의 가장 좋은 특징 중의 하나는 대입 연산을 하면 다~ 복사가 일어난다는 것 

#include <studio.h>
struct score{
    char hakbun[10];
    char name[10];
    int kor, eng, tot;
    double ave;
};
int main(void){
    struct score j, h = {"202345678", "han", 80, 89};
    h.tot = h.kor + h.eng;
    j = h;
    printf("%s %s %d %d %d\n", h.hakbun, h.name, h.kor, h.eng, h.tot);
    printf("%s %s %d %d %d\n", J.hakbun, j.name, j.kor, j.eng, j.tot);
    return 0;
}
202345678 han 80 89 169
202345678 han 80 89 169

h를 j에 대입하면 h의 모든 멤버가 j에 복사된다. 

 

 

 

Smile Han 선생님

https://youtu.be/9UUhova15ro?si=V6T3kyokrZvJc-IS

 

다음 것도 계속 듣고 싶지만 시간..

https://youtu.be/zwuX9XHS3oM?si=Kk1J0jyUNomanFCt

 

+ Recent posts