* 글 아래의 링크를 들으며 기록한 내용입니다. 링크에서 자세한 내용을 확인하세요.
구조체는 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