C - Struct(구조체)

1 분 소요

C - Struct(구조체)

  • 간만에 C 언어의 struct를 복습해봤습니다.
  • struct는 다음과 같이 정의합니다. 아래는 book1이라는 변수를 만들어줬는데, 얘는 하위 변수로 id, title을 가지고 있다는 것을 의미하죠.
struct {
    int id;
    char title[10];
} book1;
  • 다만, 아래에서 보는 것과 같이, 이렇게 struct를 정의할 경우에는 아래와 같이 매번 변수를 사용할 때마다 정의해줘야 합니다.
  • 그리고 자세히 보면, book1, book2의 하위 변수가 조금 다른 것을 알 수 있죠. 사실 구조체를 각각 저렇게 따로 정의해줘도 상관없기는 한데, 이렇게 할 경우에는 일관성이 없어집니다.
#include <stdio.h>
#include <string.h>

int main(void) {
    struct {
        int id;
        char title[10];
    } book1;
    struct {
        int id;
        char title[20];
        int num;
    } book2;

    book1.id = 20;
    book2.id = 30;

    strcpy(book1.title, "title1");
    strcpy(book2.title, "title2");

    printf("ID: %d, TITLE: %s \n", book1.id, book1.title);
    printf("ID: %d, TITLE: %s \n", book2.id, book2.title);
    // ID: 20, TITLE: title1 
    // ID: 30, TITLE: title2 

    return 0;
}
  • 따라서, 다음처럼 typedef를 사용해서 처리해주는 것이 좋습니다.
#include <stdio.h>
#include <string.h>

typedef struct {
    int id;
    char title[10];
} Book;

int main(void) {
    Book book1;
    Book book2;

    book1.id = 20;
    book2.id = 30;

    strcpy(book1.title, "title1");
    strcpy(book2.title, "title2");

    printf("ID: %d, TITLE: %s \n", book1.id, book1.title);
    printf("ID: %d, TITLE: %s \n", book2.id, book2.title);
    // ID: 20, TITLE: title1 
    // ID: 30, TITLE: title2 

    return 0;
}

Wrap-up

  • 사실 이해를 돕기 위해서 위와 같이 작성했지만, 사실은 아래와 같이 struct 다음에 Book과 같은 단어를 써주는 것이 좋습니다. 그래야 linked list를 만들기에 좋거든요.
typedef struct Book {
    int id;
    char title[10];
    struct Book* next;
} Book;

댓글남기기