해당 C언어 시리즈는 처음 코딩을 접하는 사람들이 쉽게 이해할 수 있도록 작성되었습니다.
일반적으로 C언어를 처음 배울 때 Visual Studio라는 IDE를 이용해서 코드를 작성합니다. 제 작업환경이 macOS이기 때문에 Windows와는 다소 차이가 있어 설치 과정은 아래에 링크 올려뒀습니다.
Visual Studio 2022 설치하기
Visual Studio 2022에서 C언어 실습용 프로젝트 만들기
꼭 Visual Studio 설치 후 진행하시기 바랍니다.
hello.c 소스파일을 생성하고 아래의 코드를 입력합니다.
#include <stdio.h>
void main(void)
{
printf("Hello, World!");
}
[디버그] > [디버그하지 않고 시작] 메뉴 또는 Ctrl + F5를 눌러 프로그램을 실행합니다.
프로그램을 실행하면 콘솔(Console)이라고 부르는 검은색 창에 아래와 같은 문구가 출력됩니다.
Hello, World!
이제부터 왜 위와 같은 결과가 출력되었는지 소스코드(hello.c)를 분석해 보겠습니다.
문법을 공부할 때 영단어의 뜻을 알면 더 쉽게 이해할 수 있고 기억에 오래 남습니다.
include는 '~를 포함하다'라는 뜻을 가지고 있습니다. 위 문장에서는 <> 안에 쓰여있는 stdio.h를 포함한다는 의미가 되겠네요.
stdio.h
그렇다면 stdio.h는 무엇일까요?
stdio는 Standard Input Output, h는 Header file의 줄임말입니다. C언어에서 표준으로 제공하는 입력과 출력에 대한 내용을 담고 있는 헤더 파일이라고 보면 됩니다.
위키백과의 내용에 따르면 stdio.h는 C언어 표준 라이브러리 함수의 매크로 정의, 상수, 여러 형의 입출력 함수를 포함하고 있습니다.
그런데 이걸 왜 포함시켜야 돼?
여기서 다시 한번 의문을 가지는 분들이 있을 겁니다.
아까도 봤듯이 저 코드를 실행시키면 콘솔이라는 창에 'Hello, World!'라는 문구가 나타납니다. 콘솔 창에 문구를 출력하기 위함입니다.
대부분의 프로그램은 입출력 과정이 있기 때문에 항상 포함시킨다고 봐도 무방합니다.
이 부분은 뒤에 나오는 함수라는 파트를 이해해야 하므로 지금 당장은 바로 이해가 안 갈 겁니다. 그냥 그런가 보다 하고 넘기셔도 좋습니다.
우리는 앞으로 아래의 틀을 바탕으로 코드를 작성할 겁니다.
#include <stdio.h>
void main(void)
{
...
}
C언어 프로그램은 함수의 집약체라고도 부릅니다. 프로그램이 모두 함수라는 걸로 이루어져 있기 때문이죠. 여기서 주목할 점은 '모두 함수로 이루어져 있다'입니다. 컴퓨터의 입장에서는 여러 개의 함수 중에 어느 함수를 시작으로 삼아야 할지 고민이 될 겁니다.
main 함수는 프로그램의 시작을 알리는 함수
그래서 우리는 규칙을 정해줬습니다.
"main"이라는 이름을 가진 함수를 프로그램의 시작 함수로 삼아줘!" 하고 말이죠.
위와 같은 이유로
void main(void)
라는 문구를 넣어주는 겁니다.
나중에 배우겠지만 () 안의 void는 생략할 수 있고 main 함수가 시작될 때 전달되는 값이 없음을 의미합니다. main 앞의 void는 함수가 종료되면서 반환하는 값이 없음을 의미합니다.
main 함수는 명령어를 항상 {}로 묶어주기 때문에 아래와 같은 형식을 지닙니다.
void main(void)
{
...
}
앞으로 ...의 위치에 명령어를 작성해 주면 됩니다.
main 함수를 2개 이상 작성하거나 작성하지 않으면 컴퓨터의 입장에서 프로그램 시작 위치에 대해 혼동이 오기 때문에 컴파일 단계에서 오류가 발생합니다. 따라서 main 함수는 무조건 존재해야 하며 1개만 작성해야 합니다.
printf는 print와 formatted를 합친 말입니다.
print는 '인쇄하다', formatted는 '형식화된'이라는 뜻을 가지고 있습니다.
따라서 printf는 C언어에서 제공하는 형식화된 출력 함수라고 해석할 수 있고 표준 출력 함수라고 부릅니다.
printf는 () 안에 ""로 묶은 문구를 콘솔 창에 출력합니다.
아까 Hello, World!라는 문구를 ""로 묶었기 때문에
Hello, World!
라는 결과가 나온 거죠.