Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어 구조체(Structure) 선언 완벽 가이드

구조체(structure)는 서로 다른 자료형의 변수들을 하나의 이름 아래 묶어 놓은 사용자 정의 자료형입니다. 즉, 공통된 이름을 공유하는 이질적인(heterogeneous) 데이터 항목들의 집합이라고 할 수 있습니다.

구조체의 주요 특징

  • 대입 연산자(=)를 사용하면 서로 다른 자료형을 가진 구조체의 모든 멤버 내용을 같은 타입의 다른 구조체 변수에 한 번에 복사할 수 있습니다.

  • 복잡한 자료형을 다루기 위해 구조체 안에 또 다른 구조체를 만들 수 있으며, 이를 중첩 구조체(nested structure)라고 합니다.

  • 함수에 인수를 전달할 때 구조체 전체를 넘기거나, 구조체의 개별 멤버만 넘기거나, 구조체의 주소를 넘기는 것도 모두 가능합니다.

  • 구조체 포인터(pointer)를 생성하여 사용할 수 있습니다.

구조체 선언의 일반 형식

구조체는 struct 키워드를 사용하여 다음과 같이 선언합니다.

struct tagname {
    datatype member1;
    datatype member2;
    ...
    datatype memberN;
};

여기서 각 요소의 의미는 다음과 같습니다.

  • struct: 구조체를 정의할 때 반드시 필요한 키워드입니다.

  • tagname: 구조체의 이름을 지정합니다.

  • member1, member2: 구조체를 구성하는 데이터 항목(멤버)들을 의미합니다.

예를 들어, 책 정보를 담는 구조체는 다음과 같이 선언할 수 있습니다.

struct book {
    int pages;        // 페이지 수
    char author[30];  // 저자
    float price;      // 가격
};

구조체 변수 선언하는 3가지 방법

구조체 변수를 선언하는 방법에는 크게 세 가지가 있습니다.

방법 1: 구조체 정의와 동시에 변수 선언

struct book {
    int pages;
    char author[30];
    float price;
} b;

구조체를 정의하는 마지막 부분에 바로 변수명을 붙여 선언하는 방식입니다.

방법 2: 태그 없는 구조체로 변수 선언

struct {
    int pages;
    char author[30];
    float price;
} b;

구조체 이름(tagname)을 생략하고 곧바로 변수를 선언하는 방식입니다. 단, 이 경우 동일한 구조를 가진 다른 변수를 나중에 추가로 선언할 수 없다는 점에 유의해야 합니다.

방법 3: 정의 후 별도로 변수 선언

struct book {
    int pages;
    char author[30];
    float price;
};

struct book b;

가장 일반적으로 사용되는 방식입니다. 구조체를 먼저 정의해 두면, 필요할 때마다 struct book 타입의 변수를 여러 개 만들어 재사용할 수 있습니다.