5. C의 구조체와 구조체 포인터

 

C의 구조체는 자료형들을 모아서 하나의 자료형으로 정의

배열 : 동일한 형태의 데이터를 모아서 하나의 자료로 표현

구조체 : 서로 다른 형태의 데이터를 모아서 하나의 자료로 표현

 

C의 구조체 포인터

함수의 리턴형이나 매게변수로 구조체 변수를 바로 보내게 되면, 함수가 호출될때 마다 구조체의 크기만큼 메모리를 사용하게 된다.

이럴때 구조체 포인터를 활용하면 컴퓨터의 자원을 아낄 수 있다.

 

구조체 사용법

    구조체를 정의할 때에는 다음과 같은 형식을 사용합니다. 이렇게 선언된 구조체명이 새로 만들어진

    데이터형의 이름이됩니다. 즉, int char 와 같은 역할을 하게됩니다.

 

    struct 구조체명 {
        데이터형 변수명;
        ...
    };

 
    구조체는 struct 키워드를 선두에 명시한 후 사용할 구조체명을 적어서 정의합니다. 이 때 구조체

    내부를 구성하는 데이터는 미리 정의된 데이터형으로 선언해야하고, 각 데이터는 " ; " 키워드로

    분리해야합니다. 예를 들어 이름, 나이, 키, 몸무게와 같은 인적사항을 저장하는 People 이라는

    구조체를 정의하면 다음과 같습니다.
 
    struct People {
        char name[20];
        int age;
        double height;
        double weight;
    };

    위에서도 말했듯이 구조체 내부의 데이터는 미리 정의된 데이터형이여야하기 때문에 char, int, double

    등과 같은 기본 데이터형 외에 다른 구조체나 사용자가 따로 정의한 데이터형을 사용하고 싶으면

    이 구조체보다 먼저 정의되어 있어야합니다.

    일반적이지는 않지만 한번만 선언해서 사용하는 경우 아래와 같이 구조체명을 생략해서 사용하는

    경우도 있습니다. 즉, 구조체를 정의함과 동시에 data 라는 변수를 선언하기 때문에 이 데이터형을

    다시 사용할 필요가 없다면 구조체명도 필요없기 때문에 생략 가능합니다.

 

    struct {
        char name[20];
        int age;
        double height;
        double weight;
    } data;