서론 각설하고 바로 복습 시작하겠다.
18장, 구조체와 연결 리스트
18장에서는 서로 다른 성격의 데이터들을 그룹으로 묶어서, 새로운 의미를 부여하는 방벙블 설명한다.
typedef. type define의 줄임말이다.
말 그대로, 어떠한 "type"을 "define"한다. 타입을 정의한다는 의미이다.
기존에 존재하는 어떠한 자료형을 다른 이름으로 새롭게 정의하는 기능이란거지.
예를들면 막
unsigned short int memberage;
이렇게 긴 자료형이 있다고 치면,
typedef unsigned short int USI; //Unsigned Short Int
USI memberage;
USI parentsage;
이런 식으로, 내가 원하는 자료형을 짧게 줄여서 사용할 수 있는거다.
그리고 다들 이렇게 사용하는진 모르겠지만, 나는 "이 키워드가 typedef 한 자료형인걸 알기위해" 전부 대문자로 표시할거다. 위의 USI처럼.
이 typedef는 복잡해 보이는 문법을 쉽게 표현할 수 있다.
예로 들면,
뭐 위의 USI같은 예시도 있고,
typedef int DATA[5];
DATA temp; // = temp[5]
이렇게. 배열도 하나의 자료형처럼 typedef를 할 수 있다.
그리고, 자료형의 크기도 쉽게 바꿀 수 있다.
만약 char age를 short int age로 바꾸려면, 프로그램에 있는 모든 char age를 다 short int age로 일일히 바꿔줘야 하는데, 얼마나 귀찮니..
이럴 때, typedef를 사용해주면 한 줄만 바꿔줘도 바로 모든 소스코드에 적용이 된다.
만약 사람 다섯명의 키 / 몸무게 / 발 사이즈를 각각 저장한다고 가정하자. 그러면 지금까지 배운대로라면 1차원 배열 세개를 설정해야 할거다.
그러면 일일히 작성할 짜잘한 코드가 너무 많아진다.
이렇게, 크기 / 형식이 다른 여러 데이터를 그룹으로 묶어서 사용할 수 있게 해주는 방법 중 하나가 "구조체"다.
위의 예를 코드로 짜면
typedef struct People {
char name[12];
float height;
float kg;
unsigned short int foot;
} PERSON
이렇게 짜주면, 그 사람의 이름, 키, 발사이즈를 다 저장할 수 있다.
PERSON list[40]; //40명의 이름, 키, 몸무게, 발사이즈 저장
이렇게.
만약 이걸 일일히 사용해 주려면, 요소 지정 연산자인 "."을 사용해서 대입해주면 된다.
PERSON list[40];
list[0].height = 173.5; // 가장 첫번째 사람의 키 대입
이런식으로!
그리고 이런 요소 지정 연산자 뿐만 아니라, 포인터를 사용할 수도 있다.
PERSON list[40];
PERSON *p;
p = list;
(p+0)->height = 173.23;
(p+1)->kg = 65.2;
욜케.
그리고 만약 초기화가 하고싶으면 (배열은 너무 커서, 그냥 data 하나로 예로 들겠다)
typedef struct People {
char name[12];
float height;
float kg;
unsigned short int foot;
} PERSON;
int main() {
PERSON data = {"고민", 172.22, 68.4, 265};
}
이런 식으로 해주면 된다.
일단은 오늘은
여기까지