해결된 질문
24.09.17 21:09 작성
·
45
0
23회 3회기출 풀다 구조체 내용이 전혀 기억이 나지않아 복습중입니다!
다시 보게되니 첫번째 회독땐 안보이던 것이 보이기 시작하는듯 합니다.
먼저 struct Car myCar를 선언함으로써
int형이나 float형 등 숫자형에 대해선 myCar.year등 선언함으로써 그냥 가져다 쓰는 것을 볼 수 있는데요
다만 char형에 대해선 안그런것을 볼 수 있습니다
배열 선언을 하였으나 for문을 사용하여 문자를 복사하여 myCar.model에 넣는다던지 혹은 strcpy인 카피를 하여 넣는다던지.. 숫자형에 비해 특수하다는 느낌을 좀 받는데요..
질문1 : struct Car myCar 는 Car의 선언내용을 myCar에 똑같이 선언해라(복사) 라는 뜻이 아닌가요?
질문2 : char형 후 배열방식이 이렇다함은, 같은 문자방식인 string형도 똑같을까요?
자바의 생성자나 업캐스팅 등 상속내용을 배우다 보니 더더욱 헷갈리는거 같네요...
답변 2
0
2024. 09. 17. 22:42
답변 1: struct Car myCar는 Car라는 구조체 형태의 myCar라는 변수를 만든 것입니다. 단순한 구조체 변수 선언입니다. 특별한 의미는 없습니다.
답변 2: C언어는 String 형태가 없습니다. 그저 문자를 배열 형태로 엮어 놓은 것을 문자열이라고 부르긴 합니다만... 엄밀히 말하면 문자열 형태는 아니고 "문자가 여러 개 연속된 메모리에 나열된 상태"입니다.
(기타) strcpy는 #include <string.h>
이 헤더파일을 가져와야지만 가능한 표준 라이브러리입니다. C언어를 설치하면 제공되는 함수라고 생각하시면 됩니다. printf도 stdio.h를 가져와야 하는 것처럼요.
0
안녕하세요, 인프런 AI 인턴입니다. 주서님.
구조체에 대한 질문이시군요. 강의 내용을 이해하는 데 도움이 되는 기존 질문&답변을 찾았습니다.
질문1에서는 struct Car myCar
가 무엇을 하는지에 대해 궁금해하셨네요. 간단히 설명드리자면, 이는 Car
구조체의 인스턴스를 생성하는 것이고, 구조체 멤버들의 초기화를 위한 메모리를 할당하는 것입니다. 숫자형 멤버들은 단순히 값을 할당하면 되지만, 문자열처럼 배열을 사용하는 멤버들은 배열 요소 하나하나에 값을 복사해서 넣어줘야 합니다.
질문2에서는 char형 배열이 문자열과 동일한지에 대한 물음이 있습니다. C에서는 문자열을 char형 배열로 다루기 때문에 원칙적으로 char형 배열과 문자열은 동일하게 취급됩니다. 하지만, 문자열을 다룰 때는 null 종료 문자를 고려해야 합니다.
이와 비슷한 질문과 답변을 다룬 게시물이 있습니다:
섹션2 구조체 질문: 이 질문에서는 구조체 내에서 문자열의 종결을 null로 표시하는 방법에 대해 다룹니다. 반복문을 사용해 문자열을 복사하고 마지막에 null 문자를 추가하는 방식에 대한 설명이 있습니다. 이 답변은 char형 배열과 문자열 관련 질문에 도움이 될 것입니다.
같지만 다른것들: 이 질문에서는 자바의 문자열 처리와 객체 비교에 대한 설명이 있습니다. ==
연산자와 equals
메서드의 차이를 이해하는 데 도움이 됩니다.
이 자료들이 주서님의 이해를 돕는 데 유용할 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.