티스토리 뷰

728x90
반응형
C 언어 vs C++: struct와 typedef의 차이점 정리

C 언어 vs C++: `struct`와 `typedef`의 차이점 완벽 정리

C 언어를 공부하다 보면 struct MyStructtypedef struct MyStruct라는 두 가지 형태의 구조체 선언을 자주 보게 됩니다. 겉보기에는 비슷해 보이지만, 둘 사이에는 명확한 차이점이 있습니다. 이 글에서는 두 방식의 차이점을 쉽게 알아보고, 왜 C에서는 typedef가, C++에서는 전자가 더 많이 사용되는지 알려드릴게요.

`struct`만 사용한 구조체 선언

이 코드는 MyStruct라는 이름의 구조체 태그(tag)를 정의합니다. 여기서 MyStruct는 구조체의 별명이 아니라, struct 키워드와 함께 사용해야 하는 진짜 이름입니다. 마치 '과일'이라는 카테고리 안에 '사과'라는 물체가 있는 것과 같습니다.

struct MyStruct {
    int a;
};

변수 선언 방식: struct MyStruct myVar;

struct 키워드를 매번 써줘야 하는 번거로움이 있습니다.

`typedef`를 사용한 구조체 선언

이 코드는 struct MyStruct를 정의하는 동시에, MYSTRUCT라는 새로운 타입 별칭(alias)을 만듭니다. 이제 MYSTRUCTstruct MyStruct와 완전히 동일한 타입으로 취급됩니다.

typedef struct MyStruct {
    int a;
} MYSTRUCT;

변수 선언 방식: MYSTRUCT myVar;

typedef를 사용하면 struct 키워드 없이 더 간결하게 변수를 선언할 수 있습니다.

C 언어와 C++의 `struct` 사용 관행

C 언어

C 언어에서는 구조체 변수를 선언할 때 struct 키워드를 반드시 함께 사용해야 합니다. 이 때문에 typedef를 사용해 타입 별칭을 만들어 코드를 간결하게 작성하는 것이 일반적인 관행입니다.

// C 언어에서 보편적인 방식
typedef struct {
    int x;
    int y;
} Point;

Point p1; // struct 키워드 없이 사용

C++ 언어

반면, C++에서는 struct 이름 자체가 이미 타입 이름으로 인식됩니다. 따라서 typedef를 따로 사용할 필요가 없습니다. 이는 C++의 객체 지향적 특성을 반영한 것으로, 클래스(class)와 동일한 방식으로 struct를 다루기 위함입니다.

// C++에서 보편적인 방식
struct Point {
    int x;
    int y;
};

Point p1; // struct 키워드 없이 사용

결론적으로, C++에서는 struct 이름이 바로 타입 이름이 되므로 typedef를 사용하지 않고 전자의 방식을 주로 사용합니다.

핵심 요약

구분 C 언어 C++ 언어
`struct` 사용 struct MyStruct (구조체 태그) struct MyStruct (타입 이름)
변수 선언 struct MyStruct myVar; MyStruct myVar;
보편적인 방식 typedef를 사용한 타입 별칭 typedef 없이 struct만 사용

이제 structtypedef의 차이를 확실히 아셨기를 바랍니다. C 언어 코드를 작성할 때는 typedef를 사용해 간결하고 읽기 쉬운 코드를 만들어 보세요!

728x90
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함