Chapter3. C언어 : 코드에 대한 기본 구조. 주석

2026. 4. 15. 16:26·지식 아카이브/C언어


  안녕하세요! 이번 글에서는 C언어 코드를 짜면서 C언어의 문법에 대해 대략적으로 알아가보겠습니다. 그럼 Visual Studio 준비하셨나요? 들어가보겠습니다.

색깔이 보란 색인 것이 Visual Studio입니다! 파란 색인 Visual Code와는 엄연히 다릅니다!

∨ 기본 형식 이해하기

  저희가 저번 장에서 실습했었던 코드를 기억하시나요?

#include <stdio.h>

int main(void) {
	printf("hello world");
	return 0;
}

 

여기서 printf()문을 제외한 코드는 거의 모든 프로그램에서 필수적으로 써야 하는 코드입니다. 그러면 하나씩 알아가보겠습니다.

 

∨ 라이브러리

  프로그래머들이 많이 쓰는 기능을 모아놓은 파일을 라이브러리라고 합니다. 따라서 프로그래머들은 코딩을 할 때, 라이브러리를 가져오면 여러 가지 기능을 사용할 수 있습니다. 즉, 반대로 말하면 자주 쓰이는 여러 기능을 사용하려면 라이브러리를 가져와야 합니다. 아래 코드에선 #include <stdio.h>가 그 역할을 합니다.

#include <stdio.h>

int main(void) {
	printf("hello world");
	return 0;
}

 

  stdio.h는 라이브러리를 가져올 수 있도록 돕는 파일입니다. 2장에서 설명드린 것을 기억하실지 모르겠지만. 점(.)을 기준으로 앞에는 파일의 이름, 뒤에는 파일의 확장자(유형)을 의미합니다. 여기서 파일의 확장자는 ".h"로 이는 헤더 파일을 의미합니다. 헤더 파일이란 다른 파일에서 사용할 함수(명령어)나 기능을 “미리 알려주는 파일”입니다. 이 파일을 통해 라이브러리의 함수(명령어)와 기능을 사용할 수 있게 됩니다. 

 

  stdio.h의 이름에 대해 알아봅시다. 이름은 점(.)을 기준으로 앞에 있는 "stdio"입니다. 이는 studio(스튜디오)를 의미하는 것이 아니라 'ST'andar'D' 'I'nput 'O'utput의 약자입니다. 한국어로는 "표준 입출력"입니다. 입출력에 대해 간단히 설명하면, 컴퓨터 외부에서 내부로 데이터가 들어오는 것을 입력이라고 하며 키보드로 타자를 치면, 컴퓨터로 입력 정보가 들어가는 것은 입력의 예시입니다. 컴퓨터 내부에서 외부로 데이터를 보내는 출력이라고 하는데 컴퓨터에서 스피커로 소리 정보를 보내거나, 모니터에 데이터를 표시는 것은 출력의 예시입니다.

 

 

  즉, 표준 입출력 라이브러리는 이런 입출력을 관리할 수 있는 기능을 모아놓은 파일입니다. 컴퓨터에서 데이터를 모니터로 출력하는 것은 printf() 명령어의 기능인데, 이 명령어 또한 stdio.h 라이브러리에 포함되어 있습니다. 이 라이브러리를 포함하지 않으면 printf() 기능을 사용할 수 없습니다.

 

∨ 엔트리 포인트

  프로그램은 작성된 코드의 흐름에 따라 실행됩니다. 하지만 프로그램이 어디서부터 실행을 시작해야 하는지 정해져 있어야 합니다. 이처럼 프로그램 실행이 시작되는 지점을 엔트리 포인트(Entry Point)라고 합니다.

C언어에서는 int main(void) 함수가 바로 이 엔트리 포인트의 역할을 합니다. 즉, 프로그램은 main 함수부터 실행을 시작하게 됩니다. 저번 장에서 명령어는 int main(void) 아랫 줄, 중괄호 {} 내부에 작성해야 한다고 했습니다. 그 이유는 main 함수 부분부터 시작되므로 그렇다고 설명드릴 수 있습니다.

#include <stdio.h>

int main(void) {
	printf("hello world");
	return 0;
}

 

∨ 함수

  저는 그동안 printf()를 명령어라고 표현했습니다. "printf() 명령어"라고 말이죠. 하지만 이런 형태의 명령어는 더 정확히 말하자면 함수라고 표현합니다. 함수는 입력과 출력 간의 관계를 지정하는 수학적인 표현입니다.

 

입력은 x, 출력은 y라고 할 수 있다.

 

  수학적인 함수와 컴퓨터 과학에서의 함수의 느낌과 의미는 비슷하면서도 사뭇 다르지만 그 형태는 같습니다. 프로그래밍에서 함수 또한 "함수이름()" 모양을 가집니다. printf()문을 예시로 들자면 함수 이름은 "printf"이고, 함수 이름 뒤에는 소괄호 ()가 옵니다. 또, 프로그래밍의 함수도 소괄호 안에 값을 입력할 수 있다는 공통점이 있습니다. 

프로그래밍에서의 함수 예시로 printf() 함수를 들었습니다.

 

  이제부터 함수의 모습을 한 명령어는 "명령어"라는 단어 대신, "함수"라고 더 자주 표현하겠습니다. 

 

∨ 종료

  프로그램이 실행을 마치면 정상적으로 종료되었음을 컴퓨터에 알려주어야 합니다. 이 역할을 return 0; 코드가 수행합니다.

#include <stdio.h>

int main(void) {
	printf("hello world");
	return 0;
}

 

  왜 굳이 return 0;을 사용하고 return 1;이나 return 100;은 안 되는지 궁금할 수 있습니다. 사실 return 0;만 사용할 수 있는 것은 아니며, 다른 값도 사용할 수 있습니다. 다만 일반적으로 0은 프로그램이 정상적으로 종료되었음을 의미하고, 0이 아닌 값은 오류가 발생했음을 나타내는 경우가 많습니다. 

 

  이러한 값들은 컴퓨터와의 약속처럼 사용되며, 프로그램의 실행 결과를 구분하기 위한 용도로 활용됩니다. int main(void)과 같은 형태 역시 프로그램의 실행 규칙에 따라 정해진 것입니다.

 

∨ 주석

   주석은 코드에 메모를 남기는 것을 의미합니다. 영어로는 Comment(코멘트)라고 하죠. 코드에 메모를 남기는 것은 책을 읽거나 공부할 때, 메모를 남기는 이유와 같습니다. 책을 읽을 때 이 부분이 무엇을 의미했고, 어디까지 읽었고, 어떤 생각이 드는 지 표시할 때 메모하는 것처럼, 코딩을 할 때도 코드 옆에 무언가 메모하고 싶은 내용을 주석을 통해 기록합니다. 따라서 주석은 코드의 이해를 돕기 위한 설명 용도로 자주 사용됩니다. 주석은 슬래시(/) 두개를 이어 붙인 "//" 뒤에 기록할 내용을 적습니다. 

#include <stdio.h>

int main(void) {
	printf("hello world"); // printf 함수
	return 0;
}

 

  여기서도 printf 함수 뒤에 "// printf 함수" 라고 주석을 남겼습니다. //를 사용하면 // 뒤에 내용은 주석이 됩니다. 여기서 매우 중요한 것은 주석은 프로그램 코드에 영향을 주지 않는다는 것입니다. 즉, 컴퓨터는 주석을 무시하고 코드를 실행합니다.

 

"//" 로 주석을 다는 것은 한 줄만 포함입니다. 다음처럼 주석을 달면 컴파일 오류가 생깁니다.

#include <stdio.h>

int main(void) {
	printf("Hello World"); // 주석(Comment) 
    	주석을 여기에 달면 오류가 발생합니다!
        return 0;
}

 

  왜냐하면 // 는 바로 뒤의 한 줄만 주석으로 처리해주기 때문인데요, "주석을 여기에 달면 ~~ " 이 부분은 // 다음 줄에 오게 되므로 주석 처리가 되지 않고 코드에 영향을 끼쳐 컴파일이 정상적으로 되지 않는 것입니다. 그렇다면 여러줄을 주석처리 하려면 어떻게 해야 할까요? 다음 두가지 방법을 사용해볼 수 있습니다.

  • 각 줄마다 // 사용
  • /* */ 사용

각 줄마다 // 사용을 해보겠습니다. 방금 위의 코드는 이와 같이 고칠 수 있습니다.

#include <stdio.h>

int main(void) {
	printf("Hello World"); // 주석(Comment) 
        //주석을 여기에 달면 오류가 발생합니다!
        return 0;
}

 

또는 /* */를 사용할 수 있습니다. /* */는 /* 내부 */ 에서 내부의 내용을 주석 처리하고, 이는 줄의 제한이 없습니다. 즉,

#include <stdio.h>

int main(void) {
	printf("Hello World"); /* 주석(Comment) 
        주석을 여기에 달면 오류가 발생합니다! */
        return 0;
}

 

  이처럼 주석을 나타낼 수 있습니다. 주석은 본인이 예전에 썼던 코드가 어떤 의도를 가지는지, 프로그램이 어떤 매커니즘으로 실행하는 지 상기시키는데 사용할 수 있습니다. 또한, 팀프로젝트를 진행하게 되어 여러 사람과 코드를 같이 짜게 된다면 자신이 작성한 코드의 역할과 동작을 주석을 통해 팀원들에게 쉽게 전달할 수 있습니다. 주석을 사용하는 방법은 이후에 글을 진행하면서 제가 아는 선에서 간헐적으로 알려드리겠습니다.

 

∨ 변수

  프로그램은 데이터와 명령어로 구성되어 있다고 말할 수 있습니다. 여기서 데이터란 1, 20, 100과 같은 수치 데이터, "Hello World" 등의 문자열 데이터 등의 값을 의미합니다. 이때, 데이터를 저장하는 역할을 변수라고 합니다. 수학에서 "변수"라는 표현이 있지만 일단 그 부분은 잠시 잊으시길 바랍니다.

 

 

  변수는 보통 상자에 비유합니다. 이 변수라는 상자는 하나에 하나의 데이터만 저장할 수 있고, 어떤 데이터의 유형을 저장할 수 있는지도 정해져 있습니다. 그럼 코드에서 변수를 사용해보겠습니다.

#include <stdio.h>

int main(void) {
	int a;
	int b;

	a = 3;
	b = 5;

	printf("%d", a + b); // a와 b를 더한 값을 출력.

	return 0; // 프로그램 종료!
}

 

  int a; 코드는 a라는 변수를 사용하겠다는 의미입니다. int b; 또한 마찬가지죠. 그 이후에 a = 3; b = 5; 를 통해 a는 3, b는 5가 되었습니다. 이후 a, b를 더한 값을 printf 함수를 통해 모니터에 출력하고 return 0;을 통해 프로그램이 정상적으로 종료됩니다. a와 b의 값을 다른 값으로 바꿔 실행시켜 보시길 바랍니다.

 

∨ 세미콜론 ;

  음... 근데 뭔가 ';' 이 문자 되게 많이 보이지 않나요? 이 문자 ;를 세미콜론이라고 합니다. 위 코드에서도 코드 한 줄 한 줄 끝날 때마다 세미콜론이 붙습니다. 이 세미콜론(;)은 하나의 명령이 끝났음을 나타내는 기호입니다. 즉, 컴퓨터에게 “여기까지가 한 문장이다”라고 알려주는 역할을 합니다. 참고로, 세미콜론으로 한 줄에 여러 명령어를 넣을 수 있습니다.

#include <stdio.h>

int main(void) {
	int a; int b;
	 
	a = 3; b = 5;
   
	printf("%d", a + b); // a와 b를 더한 값을 출력.

	return 0; // 프로그램 종료!
}

 

하지만 가독성을 위해 이 방법은 권장되지는 않습니다. 가독성이란 "얼마나 읽기 편하고 보기 좋느냐"를 의미하는데 이는 코드 작성 시에 매우 중요한 고려 대입니다. 다음에 나올 들여쓰기라는 개념도 마찬가지입니다.

 

∨ 들여쓰기

  들여쓰기란 줄 안에서 앞의 공백을 채워넣는 것을 말합니다. 보통 4칸 단위로 공백을 채워넣습니다. 아래 예시를 보시죠. 

#include <stdio.h>

int main(void) {
printf("hello world");
return 0;
}

 

이는 저희가 처음에 보았던 코드인데 들여쓰기를 없앴습니다. 들여쓰기를 다시 추가해보겠습니다.

#include <stdio.h>

int main(void) {
	printf("hello world");
	return 0;
}

 

들여쓰기는 공백을 띄어쓰기로 일일히 추가해도 되지만 Tab(탭)을 누르면 한번에 들여쓰기가 됩니다. 들여쓰기를 하지 않아도 코드 실행에 문제가 생기진 않지만, 이 또한 가독성을 위해서 사실상 강제됩니다. 권장 수준이 아니라 꼭 지켜야 하는 규칙처럼 받아들여지고 있으므로 이 부분을 참고하여 코드를 작성하시면 될 것 같습니다. 

 

∨ 퀴즈

 

 

∨ 정리

 

읽어 주셔서 감사합니다!

 

 

 

 

 

 

 

'지식 아카이브 > C언어' 카테고리의 다른 글

Chapter5. C언어 : 변수의 선언, 대입, 초기화, 참조.  (0) 2026.04.15
Chapter4. C언어 : only 실습 모드  (0) 2026.04.15
Chapter2. C언어 : 프로그램이 만들어지는 과정. 컴파일과 링킹  (0) 2026.04.15
Chapter1. C언어 : Visual Studio 환경 설정하기, 비쥬얼 스튜디오.  (0) 2026.04.01
Chapter0. C언어 : C언어를 배워야 하는 이유  (0) 2026.04.01
'지식 아카이브/C언어' 카테고리의 다른 글
  • Chapter5. C언어 : 변수의 선언, 대입, 초기화, 참조.
  • Chapter4. C언어 : only 실습 모드
  • Chapter2. C언어 : 프로그램이 만들어지는 과정. 컴파일과 링킹
  • Chapter1. C언어 : Visual Studio 환경 설정하기, 비쥬얼 스튜디오.
검정부기
검정부기
안녕하세여. 한성대학교 AI응용학과에 재학중인 대학생입니다!! 공부 내용 개인적으로 정리하고, 도움이 될만한 내용은 공유하기 위해 개인적으로 만든 블로그입니다. 댓글 아무거나 쓰셔도 상관없습니다. 무엇이든 질문하셔도 됩니다, 틀린 질문도 괜찮습니다, 성실히 답변해드리겠습니다!
  • 검정부기
    검정부기
    검정부기
  • 전체
    오늘
    어제
    • 분류 전체보기 (55)
      • 강의 아카이브 (11)
        • Python for AI (1)
        • 선형대수 (2)
        • 컴퓨터 프로그래밍 (4)
        • 웹프로그래밍기초 (2)
        • 확률 및 통계 (2)
        • 사회데이터의 이해 (0)
        • 생활 속의 인공지능 (0)
        • 생활 속의 빅데이터 (0)
      • 지식 아카이브 (12)
        • 파이썬 (1)
        • C언어 (11)
        • 웹프로그래밍 (0)
        • 확률 통계 (0)
        • 선형대수 (0)
        • git & github (0)
        • 리눅스 (0)
        • 컴퓨터 구조 (0)
        • 운영체제 (0)
        • 네트워크 (0)
      • Daily 아카이브 (29)
        • 공부일지 (22)
        • IT 에세이 (0)
        • 프로젝트 (1)
        • 아무거나 쓰는 곳 (4)
        • 연습 일지 (0)
        • 일기 (2)
      • 알쓸 아카이브 (2)
        • 군대 (IT) (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • 블로그 사용법
    • 안녕하세용. 반갑습니다.
  • 인기 글

  • 태그

    파이썬
    ai
    육군
    강의
    정보보호병
    서류심사
    수업정보
    시험대비
    ai학과
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
검정부기
Chapter3. C언어 : 코드에 대한 기본 구조. 주석
상단으로

티스토리툴바