인프런 커뮤니티 질문&답변
typedef 키워드 / 5:45 / 구조체 변수명 선언 관련 문의
해결된 질문
작성
·
20
0
안녕하세요.
직전 강의인 구조체 강의에서 구조체 선언 방법에 대해 알려주셨는데, 거기서는 typedef 없이도 구조체 선언, 멤버 선언, 구조체 변수 선언을 한번에 다 할 수 있다고 하셨습니다.(구조체 강의 약 1:20)
예1: struct{
int year;
float price;
}Bag1;
그런데 이번 강의에서는 typedef 없이 struct만 쓰는 경우에는 타입으로 사용할 수 없다고 설명해 주셨습니다.
이 부분이 잘 이해되지 않는데요.
예2: typedef struct Bag{
int year;
float price;
}Bag1;
위에 예1과 예2의 차이점이 뭔가요?
예2는 struct Bag 자료형(타입)의 변수인 Bag1을 선언하는 것이라고 확실하게 이해했는데, 예시1번도 동일한가요?
답변 2
0
typedef와 구조체는 아예 다른 개념입니다.
챕터 자체가 따로 나뉘어 있어서 다시 복습하시는 것을 권장드립니다.
우선 위에 예제 1번은 단순한 구조체를 선언한 것입니다.
구조체는 단순합니다. 여러 개의 변수를 선언해서 하나의 뭉텅이로 쓰고 싶다는 것이죠.
이 개념이 발전하면 Java의 클래스가 되는 겁니다.
typedef는 구조체와 사실 아예 상관없습니다. 그냥 내가 원하는 형태를 향후에 데이터 타입으로 지정할 때 사용합니다.
아래 예제 코드를 살펴봐주세요.
typedef int ARR10[10];
typedef char STRING30[30];
ARR10 numbers; // int numbers[10];과 동일
STRING30 name; // char name[30];과 동일
typedef int* PINT;
typedef char* STRING;
PINT ptr; // int* ptr;과 동일
STRING str = "Hello"; // char* str = "Hello";와 동일
typedef int INT;
typedef unsigned char BYTE;
typedef unsigned long int ULONG;
INT num = 10; // int num = 10;과 동일
BYTE data = 255; // unsigned char data = 255;와 동일
ULONG value = 32768L; // unsigned long int value = 32768L;과 동일
내가 자주 쓸 것 같은 데이터 타입을 특정 단어로 바꿔주는 역할을 합니다.
예시 1번은 구조체의 형태만 선언했기 때문에 아래에서 변수 선언할 때 struct를 붙여서 생성하시는 것이고, 아래에는 내가 저 구조체를 Bag1로 단어를 변경한 것입니다.
이게 전부입니다. 특별히 더 어려워 하실 필요가 없습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 태0님.
구조체 선언과 typedef에 관한 혼란스러운 부분을 명쾌하게 설명드리겠습니다. 두 예제의 차이점을 이해하는 것이 중요합니다.
구조체 선언 방식
- 익명 구조체 선언 (예1)
struct {
int year;
float price;
} Bag1;
이 경우, 구조체 타입에 별도의 이름(태그)이 없으므로
struct키워드를 통해 해당 구조체를 다른 곳에서 재사용할 수 없습니다. 여기서는Bag1이라는 하나의 변수만 정의됩니다.익명 구조체는 일반적으로 특정 변수 하나만 사용하려는 경우에 사용됩니다.
- 명명된 구조체 선언 및
typedef(예2)
typedef struct Bag {
int year;
float price;
} Bag1;
여기서는
struct Bag으로 구조체 타입에Bag이라는 이름을 부여함으로써, 이 구조체를 여러 곳에서 재사용할 수 있습니다.
typedef를 사용하면Bag1처럼 구조체 변수를 선언할 때struct키워드를 생략할 수 있게 됩니다.이렇게 되면
Bag이라는 이름은 기존의 구조체 태그와는 관계없이 별도의 새로운 타입으로 사용할 수 있습니다.
차이점 요약
- 익명 구조체: 특정 변수 하나만 정의되며,
struct태그 없이 별도로 재사용이 어렵습니다.
- 명명된 구조체 + typedef: 구조체에 이름을 부여하여 재사용이 가능하며,
typedef를 통해 더욱 간단하게 사용할 수 있습니다.
추가적인 참고 자료로서, Inflearn 내 관련된 질문과 답변들이 도움이 될 수 있습니다:
- “18번 typedef 키워드 질문”: 구조체 선언과
typedef사용에 대해 다룬 질문입니다. 구조체와typedef의 명시적 사용 방법을 더 깊이 이해할 수 있습니다.
저는 질문자님의 이해를 돕기 위해 유사한 기존 답변을 추천드리고 있습니다. 현재 베타 기능으로 제공되는 답변이므로, 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가 궁금한 점이 있으면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





