본문 바로가기
PROGRAMMING/C

Hello world #2

by 쪼렙엔지니어 2022. 2. 8.
반응형

오늘은 어제 만들어본 Hello world라는 프로그램을

완전히 파헤쳐 보는 시간을 갖겠습니다.

 

어제 프로그램을 작성해보고 실행도 해보았지만

어떤문법으로 만들어졌는지 전혀 알수가 없어서

답답하셨죠?

 

오늘 그 해답을 드리겠습니다.

 

일단 먼저 어제 작성한 프로그램부터 다시 보겠습니다.

 

 

1. #include <stdio.h>

그럼 첫째줄 부터 보겠습니다.

#include <stdio.h>에서

#으로 시작하는 명령은 전처리기를 의미합니다.

전처리기라는 것은 "어떤것을 하기 전에 처리하는 기계"

라고 생각하면 됩니다.

그럼 여기서 말하는 어떤것이란?? 무엇일까요?

네 우리가 작성한 프로그램을 구동하는 일을 이야기 합니다.

즉, 우리가 작성한 프로그램을 구동하기 전에

무엇인가를 해라~~~ 라고 하는 것이 #으로 시작하는

전처리기 명령입니다.

 

그럼 다시 위에서 보면 #include라고 되어 있지요?

include는 말 그대로 포함하라는 의미이니

#include는 프로그램실행하기 전에 무엇인가를 포함해라~

라는 전처리기 명령 인것 입니다.

 

마지막으로 무엇을 포함하라는 내용일까요?

네. 뒤에 쓰여있는 <stdio.h> 입니다.

.h로 작성되어 있는 파일은 헤더파일을 의미하는데,

헤더파일은 나중에 자세히 다룰 예정이니

지금은 우리가 필요한 여러가지 함수들을 정의 해 놓은

파일이라고만 생각하시면 됩니다.

 

stdio.h는 standard input output으로

표준 입출력에 대한 함수들이 정의되어 있는

헤더파일입니다.

 

우리가 프로그램을 작성할때 사용한 화면 출력함수인

printf가 이 stdio.h파일에 포함되어 있어서

stdio.h를 미리 불러와서 우리 프로그램에 포함시켜 두어야

화면출력함수를 사용할 수 있는 것입니다.

 

즉, 결론을 지어 이야기 해보면

"프로그래머가 작성한 프로그램을 시작하기 전에

stdio.h라는 헤더파일을 포함해라"라는

의미가 되는 것입니다.

 

 

2. int main()

이제 두번째 줄입니다.

main은 함수의 이름입니다.

우리가 앞으로 함수의 이름으로 많은 단어를 사용하겠지만

(단어 혹은 의미없는 문자들의 모임등등 어떤것도 가능함.)

main 함수는 모든 C프로그램이 처음으로 시작하는 부분입니다.

 

프로그램을 실행한다는 말의 의미는

"CPU의 명령어 레지스터에

프로그램의 시작명령어 주소값을 전달한다."는

의미입니다.

즉 main의 첫번째 명령어의 주소값이 전달된다는 의미.

어려운가요?

C언어를 배우기전에 사전학습내용을 천천히 다시 읽어보시면

좀더 이해가 빠르게 되실겁니다.

 

그럼 main 앞에 int라고 적혀있는데,

int main은 무엇인가요?

int main이라 함은 이 함수의 실행이 끝날 때

정수값을 반환한다는 의미입니다.

 

함수는 f(x) = y 이지요?

x라는 값이 들어가서 결국엔 y라는 값이 나옵니다.

이렇게 나오는 y를 C언어에서는 반환값이라고 부르고

C언어에서는 반환값에 대한 데이터 타입을

함수를 정의하거나 호출할때 지정해 주어야 합니다.

그래서 main함수를 호출할때 그 앞에 int를

적어준겁니다.

 

여튼, 함수를 호출할때는 "함수이름( )" 형태로

작성합니다.

그리고 함수의 내용은 그 뒤의 { } 중괄호 속에

적어주면 됩니다.

 

여기까지가 두번째 줄 내용입니다.

 

 

3. printf

세번째 줄 입니다.

Printf 는 괄호안의 내용을 출력할 수 있게 해주는 함수 입니다.

 

Printf는 지금 hello, world!라는 괄호안의 글자를 화면에 출력해주었는데

화면에 글자를 출력하는 일은

굉장히 많은 과정을 거쳐야 하는 복잡한 작업입니다.

 

예를 들어 운영체제에 자신(프로그램)

화면에 글자를 출력한다는 신호를 보내야 하고

운영체제는 모니터에 출력신호를 보내주어야 하는 등의 많은 과정이 있기 때문입니다.

 

이 많은 과정을 우리가 문장을 출력하려고 할 때 마다

우리가 직접 작성을 한다면 엄청 힘들겠지요?

이러한 내용을 전부 포함되어 있는 파일이

"stdio.h" 파일이고 우리는 그것을 불러와서 사용하는 것입니다.

 

 

\n (역슬러시 n)은 개행문자입니다.

우리가 문장을 쓰다가 엔터를 친 것처럼

다음 행으로 넘어가는 거죠.

 

그리고 모든 문장의 끝에는 세미콜론 ; 을 넣어주어야 합니다.

함수의 선언부분이나, 전처리기의 헤더파일 선언부분등에는

붙이면 안되지만 문장의 끝에는 세미콜론을 꼭 붙여야 합니다.

붙이지 않으면 오류가 납니다.

 

여기까지가 3번째 줄 내용입니다.

 

 

4. return

마지막 4번째 줄 입니다.

아까 위에서 모든 함수는 반환값을 가진다고 했지요?

 

return 0;  0을 반환한다는 의미입니다.

 

우리가 메인 함수 선언할 때

int main으로 정수형을 반환하겠다고 정의하였고,

실제로 return 0으로 정수값인 0을 반환하였습니다.

 

0을 반환한다는 뜻은 컴퓨터에게 프로그램이

올바르게 종료되었음을 알려주는 것입니다.

반면에 1을 반환한다면 컴퓨터에게 오류가 있었음을

알려주는 것입니다.

 

그러나 사실 신경쓰지 않아도 되는 항목입니다.

최소한 윈도우환경에서는 리턴값은 무시됩니다.

 

 

 

자 어떠신가요?

이제 대충 감이 잡히시나요??

사실은 아직도 이해가 완전히 되지 않는 부분이

많을겁니다.

그게 당연한거에요.

이제 맛보기만 했을 뿐이고,

C언어의 여러내용을 배우다 보면 대부분 궁금증이

저절로 해결될 것 입니다.

 

일단 오늘은 여기까지 하겠습니다.

고생하셨습니다.

 

제 블로그를 방문해 주셔서 감사합니다.

도움이 되셨다면 공감(좋아요) 부탁드리고,

댓글은 다른분들께도 좋은 정보일 수 있으니

공개로 부탁드립니다.

여러분의 작은 정성이 좋은 포스팅을 생산하는

힘이 된답니다. :)

감사합니다.



 

반응형

댓글