인프런 커뮤니티 질문&답변
구조체 기본 형태
해결된 질문
작성
·
190
·
수정됨
0
안녕하세요!
2분 쯤에 구조체 선언하는 2가지 형태에 대해서 비교해 주실때
오른쪽에서 구조체 선언할때 (왼쪽과는 달리)그냥 struct 라고만 되어있는데
struct Person {//내용}person1 ; 이렇게
Person(구조체명)이 들어가야 하는데 실수로 빠진 건지 아니면 이 경우에는 구조체명을 쓰지 않아도 되는 건지 궁금합니다!
그리고 왼쪽 케이스 아랫부분 사용시 용례에
struct 구조체명 타입명;
이라고 되어있는데 여기서 타입명을 변수명이라고 이해해도 될까요? 뒷 강의에서 typedef를 다루면서 타입명이 나오기는 하는데 여기서도 typedef 키워드가 있을때를 의미하는 건지 헷갈려서요ㅜㅜ
답변 2
0
저 형태도 됩니다.
저렇게 이름을 명시하지 않은 것을 익명 구조체라고 합니다.
예제 하나 드립니다.
#include <stdio.h>
int main() {
// 익명 구조체 선언과 변수 정의
struct {
char name[50];
int age;
} person1;
// 나이 값 직접 대입
person1.age = 25;
// 반복문을 이용하여 name에 값 대입
char tempName[] = "Weekend";
for (int i = 0; i < sizeof(tempName); i++) {
person1.name[i] = tempName[i];
}
// 출력
printf("Name: %s\n", person1.name);
printf("Age: %d\n", person1.age);
return 0;
}Name: Weekend
Age: 25
영상 내의 익명 구조체 예제와 아래 변수명을 붙인 설명은 따로인데
뭔가 코드 밑에 있으니까 두 개가 연관된 것처럼 보이네요..
아예 다른 것입니다.
넵 타입명을 변수명이라고 생각하셔도 됩니다.
struct Person이라는 타입으로 만든 변수가 person1으로 보시면 됩니다.
영상이 조금 헷갈리게 되어있네요. 추후에 수정하겠습니다.
피드백 감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. 곽지원님.
구조체 선언 및 사용 방식에 관한 궁금증을 가지고 계신 것 같네요. 이와 관련하여 유사한 질문과 답변을 제공한 게시물들이 있어 소개드립니다.
1. 구조체 선언 방식
구조체를 선언할 때 두 가지 방법이 있습니다.
첫 번째 방법:
struct키워드와 구조체 이름을 사용하여 구조체 변수를 선언합니다. 예를 들면:struct Person { // 멤버 } person1;여기서
struct Person이 구조체의 이름(혹은 태그)이고person1은 구조체 변수입니다.두 번째 방법:
typedef를 사용하여 구조체의 별칭을 정의하고 좀 더 간단하게 변수 선언을 할 수 있습니다:typedef struct { // 멤버 } Person; Person person1;이 방법은
typedef를 통해 구조체에 별칭을 줌으로써struct키워드를 생략하고 구조체 변수를 선언할 수 있게 해줍니다.
2. “타입명”과 “변수명” 구분
- 구조체 선언 시:
struct 구조체명 변수명;
여기서 “구조체명”은 구조체의 태그를, “변수명”은 실제 구조체의 인스턴스 이름(변수명)을 의미합니다. 그러므로 “타입명”은 구조체의 타입을 가리키며, 이 타입으로 변수(인스턴스)를 선언하는 것입니다.
유사 질문 링크
이와 유사한 주제를 다룬 기존 질문이 있어 링크를 통해 더 깊이 있는 설명을 확인하실 수 있습니다:
- “18번 typedef 키워드 질문”: 구조체 선언과
typedef사용에 대해 다룬 질문입니다. 이 질문에서는typedef사용 시 이점과 구조체 변수 선언 방식에 대해 설명하고 있습니다.
이 자료를 참고하시어 이해에 도움 되시길 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





