인프런 커뮤니티 질문&답변

김현석님의 프로필 이미지
김현석

작성한 질문수

독하게 시작하는 C 프로그래밍

자료형에 대한 이해

c언어 자료형에 대해

해결된 질문

작성

·

224

1

자료형에 대한 이해 5:38에서 C언어 자료형에 대해 설명하는 도중 함수형에 대해 의문이 들어 글을 작성합니다. 이전에 설명해 주실때 자료형은 일정길이의 메모리에 저장된 정보를 해석 하는 것으로 설명해주셨습니다. 함수형은 메모리에 일정길이를 해석하는 개념이 있는지 또는 다른 해석법이 있는지 궁금합니다.

답변 1

1

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

우선 좋은 질문이라는 점을 꼭 언급하고 싶습니다. 매우 의미있는 질문입니다.

함수형도 '일정길이에 저장된 정보를 해석하는 방법'이라는 조건이 큰 틀에서 충족됩니다. 다만 int형이나 double형처럼 길이가 일정하지는 않습니다. 무엇보다 저장된 정보가 단순 자료가 아닌 실행코드라는 점에서 큰 차이가 있습니다. 그리고 끝이 명확하지 않습니다. 함수형은 결국 포인터처럼 (실행코드가 저장된) 메모리의 주소입니다. 하지만 저장된 코드가 언제 끝난다는 정보는 존재하지 않습니다. 이는 어쩌면 포인터가 가지고 있는 근본적인 문제에 부합하는 것으로도 볼 수 있겠습니다.

아무튼 실행코드의 끝은 결국 함수가 반환하는 리턴코드를 만나는 지점입니다. 그 위치가 함수형에 포함되지는 않습니다만 문자열의 끝이 null인 것과 비슷한 모습입니다. 2024년 현재 C언어는 고급어라기 보다 기계어에 더 가까운 언어가 아닐까 생각합니다. 이 모든 것을 개발자가 잘 알고 사용하라는 의미가 강한 언어죠.

그리고 더 나은 이해를 위해 한 가지 첨언하겠습니다. 바로 무치형(void) 입니다. 길이가 0인, 해석대상이 존재하지 않는 자료형입니다. 아마도 제가 내리는 정의와 가장 반대되는 형식일 것입니다. 저장공간 자체가 아예 없으니까요. 그런데 이 마저도 영어라는 언어의 특성과 연결해보면 답을 얻을 수 있습니다. 우리는 '없다'라고 동사로 부정합니다. 하지만 영어는 '없음이 있다'라는 방식으로 명사부정을 합니다. 비약적일 수 있겠으나 그러한 언어적 특징을 대표하는 자료형이 바로 void가 아닐까 생각합니다.

추상적인 이야기들이 많습니다만 답변이 되었기를 소망합니다. 고맙습니다. 😄

김현석님의 프로필 이미지
김현석
질문자

함수형과 유도형이 분리하여 설명해주시기에 의문이 있었는데 실행코드 라는 차이가 있었네요
길게 답변 해주셔서 감사합니다!!

김현석님의 프로필 이미지
김현석

작성한 질문수

질문하기