211105, C언어 입문 day 14-1

Min Hyeok·2021년 11월 5일
0

C언어 개념 익히기

목록 보기
18/19

서론 각설하고 바로 복습 시작하겠다.

18장, 구조체와 연결 리스트

18장에서는 서로 다른 성격의 데이터들을 그룹으로 묶어서, 새로운 의미를 부여하는 방벙블 설명한다.

18-1

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를 사용해주면 한 줄만 바꿔줘도 바로 모든 소스코드에 적용이 된다.

18-2

만약 사람 다섯명의 키 / 몸무게 / 발 사이즈를 각각 저장한다고 가정하자. 그러면 지금까지 배운대로라면 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};
}

이런 식으로 해주면 된다.

일단은 오늘은

여기까지

0개의 댓글