해결된 질문
작성
·
85
·
수정됨
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 인턴입니다. 곽지원님.
구조체 선언 및 사용 방식에 관한 궁금증을 가지고 계신 것 같네요. 이와 관련하여 유사한 질문과 답변을 제공한 게시물들이 있어 소개드립니다.
구조체를 선언할 때 두 가지 방법이 있습니다.
첫 번째 방법: struct
키워드와 구조체 이름을 사용하여 구조체 변수를 선언합니다. 예를 들면:
struct Person {
// 멤버
} person1;
여기서 struct Person
이 구조체의 이름(혹은 태그)이고 person1
은 구조체 변수입니다.
두 번째 방법: typedef
를 사용하여 구조체의 별칭을 정의하고 좀 더 간단하게 변수 선언을 할 수 있습니다:
typedef struct {
// 멤버
} Person;
Person person1;
이 방법은 typedef
를 통해 구조체에 별칭을 줌으로써 struct
키워드를 생략하고 구조체 변수를 선언할 수 있게 해줍니다.
struct 구조체명 변수명;
이와 유사한 주제를 다룬 기존 질문이 있어 링크를 통해 더 깊이 있는 설명을 확인하실 수 있습니다:
typedef
사용에 대해 다룬 질문입니다. 이 질문에서는 typedef
사용 시 이점과 구조체 변수 선언 방식에 대해 설명하고 있습니다.이 자료를 참고하시어 이해에 도움 되시길 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.