컴퓨터 초보 탈출

컴퓨터를 배워 봅시다.

  • 2026. 4. 23.

    by. 컴퓨터마스터

    목차

      반갑습니다! 여러분의 컴퓨터 마스터입니다. 💻

      어제와 그저께에 이어, 오늘은 C언어의 '꽃'이자 '완성'이라고 할 수 있는 심화 개념들을 다뤄보겠습니다.

      오늘의 주제는 데이터를 묶어 관리하는 구조체, 그리고 컴퓨터의 자원을 효율적으로 쓰는 동적 메모리 할당입니다.

      구초제와 동적 메모리 할당에 대해서 이해를 하시면 프로그래밍을 다룰때 이해하는 폭이 더 쉬워지겠죠?~

      힘들어도 조금만 참고, 저와 함께 C언어에 마스터로 가보시죠~


      [C언어 기초 3탄] 데이터의 집합과 메모리의 유연한 활용

      우리는 지금까지 변수 하나에 값 하나를 담는 법, 그리고 같은 종류의 값을 여러 개 담는 배열을 배웠습니다. 하지만 실제 세상의 데이터는 그렇게 단순하지 않죠.

      1. 다양한 정보를 하나로! '구조체(struct)'

      학생 한 명의 정보를 관리한다고 생각해 봅시다. 이름(문자열), 나이(정수), 성적(실수) 등 자료형이 제각각이죠? 이걸 따로따로 변수로 만들면 관리하기가 너무 힘듭니다. 이때 사용하는 것이 바로 구조체입니다.

      struct Student {
          char name[20];
          int age;
          float score;
      };
      

      이렇게 선언해두면 Student라는 나만의 새로운 자료형이 탄생하는 셈입니다. 마치 서랍장에 '이름 칸', '나이 칸', '성적 칸'을 만들어두고 통째로 들고 다니는 것과 같죠.

      마스터의 팁: 구조체는 객체 지향 언어(C++, Java 등)의 '클래스(Class)' 개념으로 이어지는 아주 중요한 징검다리입니다. 여기서 개념을 잘 잡으면 나중에 다른 언어를 배울 때 훨씬 수월해집니다!


      데이터의 집합과 메모리의 유연한 활용
      데이터의 집합과 메모리의 유연한 활용

      2. 메모리를 내 마음대로, '동적 할당(Dynamic Allocation)'

      지금까지 우리가 만든 배열은 int arr[10]; 처럼 처음에 크기를 정해야 했습니다. 하지만 프로그램을 실행하다가 "어? 데이터가 10개가 아니라 100개가 들어오네?" 하는 상황이 생기면 어떻게 할까요?

      이럴 때 필요한 것이 동적 메모리 할당입니다.

      • malloc(): "컴퓨터야, 나 지금 메모리 400바이트만 빌려줘!"라고 요청하는 함수입니다.
      • free(): "빌린 메모리 다 썼어, 이제 돌려줄게!"라고 반납하는 함수입니다.

      컴퓨터 메모리에는 **스택(Stack)**과 **힙(Heap)**이라는 영역이 있습니다. 우리가 평소 쓰는 변수는 스택에 쌓이고, 동적 할당으로 빌려온 메모리는 힙 영역에 자리 잡습니다.

      ⚠️ 주의하세요! 메모리를 빌려놓고(malloc) 돌려주지(free) 않으면 **'메모리 누수(Memory Leak)'**라는 현상이 발생합니다. 마치 도서관에서 책을 빌려놓고 영영 반납하지 않아 도서관이 꽉 차버리는 것과 같죠. C언어 개발자의 숙련도는 이 free를 얼마나 꼼꼼하게 하느냐에서 결정됩니다.


      3. C언어가 여전히 '최고'인 이유

      많은 현대적 언어들이 메모리 관리를 자동으로 해줍니다(Garbage Collection). 하지만 C언어는 개발자가 직접 메모리를 주무를 수 있게 허락합니다.

      • 자유도: 하드웨어를 가장 밑바닥부터 제어할 수 있습니다.
      • 성능: 불필요한 자동 관리 시스템이 없어서 속도가 압도적으로 빠릅니다.
      • 적용 분야: 자율주행 자동차 시스템, 스마트폰 운영체제 커널, 로봇 제어 등 '성능과 안정성'이 생명인 곳에는 반드시 C언어가 있습니다.

      4. 나의 실수이야기

      "처음에 구조체를 프로그래밍 하다가 세미콜론(;)을  빠트리고 작성하다가 30분 동안 헤맸던 기억이 납니다. 여러분도 struct 정의 마지막에는 꼭 세미콜론을 넣는 것을 잊지 마세요~

      5. 배열(Array)과 구조체(struct)의 차이점

      배열과 구조체는 언뜻 보면 같은 것이라 생각할 수 있는데 그 차이점을 비교해 드리겠습니다.

      구분 배열(Array) 구조체(Struct)
      데이터 종류 동일한 자료형만 가능 서로 다른 자료형 가능
      접근 방식 인덱스(0, 1, 2...) 멤버 연산자(.)
      주요 목적 반복적인 데이터 처리 연관된 데이터 그룹화

       

      🏁 글을 마치며

      3일에 걸쳐 C언어의 기초부터 심화까지 훑어보았습니다. C언어는 처음엔 딱딱하고 차갑게 느껴지지만, 익숙해지면 컴퓨터의 가장 깊은 곳까지 이해할 수 있게 해주는 아주 정직하고 매력적인 언어입니다.

      이 글로 인해 C언어에 매력에 빠졌다는 소식이 들려오면 저도 정말 기쁠 것 같네요! 다음에도 유익한 IT 지식으로 찾아오겠습니다.

      여러분의 공감과 댓글은 저(컴퓨터 마스터)를 춤추게 합니다! 💃🕺

       

      감사합니다.