본문 바로가기

프로그래밍/C언어

[C언어] 작성해본 소스코드를 살펴봅시다.


우선 지난번에 작성했던 소스코드를 잠시볼까요?

------------------------------------------------------------------------------

#include <stdio.h>

int main(void)

{

printf("hello \n");

return 0;

}

------------------------------------------------------------------------------

여기까지 해서 hello라는 문자열을 출력해보았는데요.

자 이제 천천히 살펴봅시다.

우선 제일 위에 있는 #include <stdio.h> 부터 볼게요.

보통 #문자로 시작해서 위에서 보는바와 같이 소크파일 제일 상단에 위치하는것을 전처리 구문이라고 하는데요.

이는 표준입출력(Standard Input Output)의 헤더파일을 포함합니다.

이것을 통해서 hello라는 글을 출력하기 위해 썻던 출력함수 printf()를 사용할수 있었구요,

뒤에서 배울 입력함수 scanf()를 쓸수 있습니다.

더 설명하기에 앞서서 만일 위에있는 전처리 구문을 안쓰고 코드를 작성하면 어떻게 될까요?

한번 해보실래요?

지우면 printf()란이 빨갛게 되면서 f7를 눌러도 밑에 실패라는 글이 뜰겁니다.

자 여기서 전처리 구문의 역할을 설명할텐데요.

그냥 쉽게 이야기해서 printf(), scanf()의 동작방법에 대해서 설명을 해놓은 문서, 즉 코드가 있는데

그것을 이쪽 소스파일로 불러들여서 쓰겠다 이겁니다.

전처리 구문을 쓰지않고서는 내가 수많은 동작을 가진 함수들을 알아도 쓸수가 없는거죠. 직접 만들지 않은이상.

자세한 설명은 뒤에가면 알수 있구요. 일단 지금은

printf()라는 함수를 쓰기 위해서 위쪽상단에 적어둬야 한다는 사실을 기억해주셔야 합니다.

그리고 밑에 보시면

int main(void)라는 부분이 있죠?

main이라고 하는것도 함수의 이름인데요. 프로그램을 만들고 실행시킬때 항상 컴퓨터는 이 main 함수를 우선적으로 찾게 됩니다.

이 main함수를 통해서 작성되어진 코드, 그리고 다른 함수들을 불러와서 프로그램을 동작시키는데요.

즉, main 함수가 프로그래의 첫 출발점이라고 보면 되겠군요.

여기서 잠깐 더 생각해보자면, 한 솔루션내에 즉 소스파일을 담고있는 솔루션에 메인함수로 작성되어진 소스파일이 2개 이상있거나

아니면 없을 경우에는 컴파일이 되지 않습니다. 설령 되었다 하더라도 바보컴퓨터는 프로그램을 실행을 시키지 못하는거죠.

그래서 결론은 한 프로그램내에서는 단 한개의 main 함수가 존재해야 한다는거니다.

그리고 메인함수밑으로

{

}

이렇게 묶어주었죠? 이것은 이 메인함수가 { 에서부터 }까지 동작되어진다는겁니다. 그말은 모든 명령어나 기타다른함수가 저안에 기술되어야 한다는 말이죠. 그래서 printf()함수도 메인함수의 { }안에 존재했던겁니다.

그리고 C언어가 절차지향적이라는 특징을 가지고 있다라고 설명을 했었는데요.

맞습니다. 함수내부의 코드가 위에서 아래로 순차적으로 실행되구요.

막 중간에서 시작해서 처음으로 갔다가 뒤에서 끝나다거나 이렇게 하진 않습니다.

goto문을 사용해서 할수있으나 이는 최근에 사용되지 않는걸로 알고 있어요.

printf()함수를 보면요. 위에서 이함수는 출력함수라고 언급을 했었는데요. <stdio.h>에 기술되어 있습니다.

사용법은 printf()함수안에 ""를 넣어서 즉 printf(" ")를 쓰고 나서 마지막에 ; 라는 선언처리를 해줍니다.

쌍따옴표안에 필요한 글을 적게되면 그 글자가 printf()함수에 읳서 출력이 되는거죠.

; 선언처리는 말 그대로 선언입니다. 나는 이함수를 사용하겠다, 변수를 사용하겠다라고 컴퓨터에 알려주는거죠.

이 선언처리를 하지 않으면 컴퓨터가 내가 무슨 함수를 사용하는지 알지 못합니다.

나중에 하게될 변수선언도 동일하기 때문에 중요한 녀석입니다.

그리고 hello말 뒤에 \n 이라고 적었었죠? 이것은 개행문자로

워드프로세서에서의 엔터에 해당됩니다. 줄을 나눠주는거죠.

이것의 있고 없고의 차이점을 알기위해서

한번 소스코들 볼게요.

------------------------------------------------------------------------------

#include <stdio.h>

int main(void)

{

printf("hello \n");

printf("hi ");

printf("수지 \n");

return 0;

}

------------------------------------------------------------------------------

를 입력해봅니다. 결과를 보세요.

실행화면에서

이렇게 출력이 될겁니다.

------------------------------------------------------------------------------

hello

hi 수지

계속할려면 아무키나 누르세용.

------------------------------------------------------------------------------

차이점을 아시겠나요? 그리고 개행문자의 표시는 " "안에 있어야 한다는 사실. 명심하세요.

그리고 return 0; 을 살펴볼까요?

return은 말 그대로 돌려준다라는 말인데 0을 뒤에다 적었습니다. 그리고 ;라고 선언을 하죠.
이 return 은 위에서 차례대로 실행되고 여기에 달했을시에 어느 특정한 값을 컴퓨터에게 돌려주는데

제가 0을 되돌려주겠다라고 0을 적고 선언 ; 를 합니다.

그러면 0이라는 값을 컴퓨터가 받아들이는데요.

컴퓨터에게 0이라는 의미는 프로그램 종료를 의미합니다.

그래서 위의 hello 출력 프로그램을 실행시킬시에

위에서 차례대로 prinf("hello \n"); 를 실행시켜서 실행화면에 hello가 출력이되고

그다음줄인 return 0;이라는 문장을 만나서 프로그램이 종료되게 됩니다.

실행화면에서는 계속할려면 아무키나 입력하라는 메시지가 나오는데 이말은 곧 종료를 의미합니다.

그래서 보통 소스코드 메인함수의 마지막에 적어주는게 다반사죠.

사실 안적어도 프로그램은 알아서 종료될겁니다. 메인함수의 끝표시로 } 가 있으니까요.

하지만 적어주는 버릇을 들여놓고 항상 쓰도록 하시는게 좋습니다. ^^

다음시간에는 식별자에 대해서 알아보고 기타 몇가지 특수문자들을 출력해보도록 해요.