ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1. C언어 기본 구조.
    프로그래밍/C 2017. 6. 24. 00:51

    아마 C언어의 소개, 컴퓨터 프로그램의 동작 원리는 따로 구성해 글을 쓸 것이다.

    (아마도 '컴퓨팅 언어' 항목에 쓰지 않을 까.)



    일단 언어에 입문하면, 반강제적으로(?) 만들게 되는 마성의 프로그램인

    Hello World!를 작성해보자.

    소스코드.

    #include <stdio.h> //printf 함수가 정의되어 있는 헤더파일.
    //(한줄 주석)

    int main(void)
    {
    printf("Hello World!");
    return 0;
    }

    /*
    여러줄 주석.
    File Name: Hello.c
    Maked: BlaCk_Void
    Contents: Hello World! 출력.
    */


    결과.


    컴파일이 되고, 'Hello World!' 란 결과가 나왔다.


     

    이제 소스크드를 해석해보자.


    - 주석

    주석은 프로그램의 내용을 설명하기 위해 일종의 메모를 남기는 것입니다.

    메모의 내용을 다르게 적는다고 프로그램의 실행내용이 바뀌면 안되겠죠?

    네. 주석은 컴파일러가 무시하고 컴파일을 합니다.


    주석은 크게 2가지 종류가 있는데,

    // : 한줄만 주석이 됨.

    /* 내용들 */: '*'사이에 주석 내용을 넣는다. 그러니까 여러줄 주석을 사용할 수 있겠죠.


    여러줄 주석을 사용할 때 주의할 점은

    /* /* */ */ 이렇게 중복을 해서 사용하면 안됩니다.

    '/*' 부터 그 후 처음 나오는 ' */'까지가 주석이라는 점을 고려해보면 두번째 나오는 '/*'는 주석 내용이 되고, 마지막의 '*/' 은 컴파일 에러가 생기게 되는 것은 당연하다고 볼 수 있습니다. 


    이렇게 프로그래밍은 일단 에러가 나면 직관이 아닌 논리로 접근을 해야 합니다.


    - 전처리기

    #include <stdio.h>

    전처리기는 말 그래로 컴파일 전에 먼저 처리를 하라는 것이다.

    '#' 표시가 붙죠.


    Hello.c에서 쓰인 전처리기 명령어는 'include'인데,

    컴파일 전에 소스코드의 상단에 stdio.h라는 파일의 내용을 포함해주라는 뜻입니다.


    - 헤더파일

    헤더파일은 '.h'를 확장자로 가지는 파일입니다.

    여기서는 stdio.h가 헤더파일 입니다.(STanDard Input Output. 표준 입출력.)

    stdio.h를 include 했으니, 이제 Hello.c 파일에서는 stdio.h에 있는 내용을 사용할 수 있겠죠.

    주석에 있는 내용을 보면 알겠지만 printf는 stdio.h에 정의되어 있는 내용들중 하나입니다.


    헤더파일 위치는

    Visual Studio 2015를 기준으로

    C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include

    와 같이 include 안에 위치하고 있습니다.

    다른 컴파일러도 보통 include 폴더 안에 있다고 보면 됩니다.


    +

    리눅스의 경우 /usr/include 안에 존재합니다.


    - 함수

    int main(void)
    {
    함수 내용.....
    }

    이 바로 함수입니다.

    함수는 프로그램이 하는 특정한 행동을 기술합니다.


    힘수는 C언어의 기본 단위이므로 중요합니다.


    그럼 함수의 구조에 대해서 알아보도록 하겠습니다.


    함수의 구조.

    반환값 함수이름(인자값)
    {
    함수 내용...
    }


    Hello.c의 함수와 비교를 하면, int가 반환값, main이 함수 이름, void가 인자값, printf와 return이 함수의 내용이 되겠지요.

    int는 integer의 약자로 정수를 의미하고, void는 비어있다. 즉, 아무것도 없다는 뜻입니다.


    '{'는 함수의 시작, '}'는 함수의 종료지점을 알려주는 역할을 합니다. 함수내부의 영역을 지정해주는 것이죠.


    그럼 이제 함수의 내부 내용을 분석해보자.

    printf("Hello World!");
    return 0;


    라이브러리 함수, 헤더

    printf는 모니터로 내용을 출력하는 함수 입니다. ""내부에 있는 내용이 출력이 되죠.

    printf는 위에서 이야기한 것처럼 stdio.h 파일 내부에 정의가 되어 있습니다. 궁금하면 stdio.h 파일을 열고, Ctrl+f를 한 다음 printf를 해서 찾아봅시다.


    이처럼 라이브러리에서 정의가 되어있는 함수들를 불러와서(include) 적절히 사용하면,

    밑바닥부터 모든 것을 구현할 필요가 없어서 굉장히 편해집니다.


    return

    return은 크게 2가지가 있다고 생각하면 된다.

    함수를 호출한 영역으로 값을 반환하는 것, 반환후 함수를 종료하는 것 이죠.


    여기서는 0을 반환하고, main() 함수를 종료했다고 해석하면 됩니다.

    만약 return; 이라 되어 있다면 아무것도 반환하지 않고 종료하라는 의미.


    ';'기호

    세미콜론(;)은 우리가 문장이 끝나면 '.'(마침표)을 찍는 것처럼 연산을 수행하고 나면 끝이 났다는 의미로 ';'를 넣어 프로그램 수행 명령의 끝을 알려줍니다.


    +

    main 이라는 이름의 함수는 C언어에서 실행될때 가장 처음 호출하는 함수 이다.

    https://black7375.tumblr.com/post/162313949040/int-main-vs-void-main
    https://black7375.tumblr.com/post/162313949040/int-main-vs-void-main

    ++
    주석사용시 참고

    https://black7375.tumblr.com/post/162310732445/주석을-활용한-코드-테스트

    https://black7375.tumblr.com/post/162310732445/주석을-활용한-코드-테스트


    끝~~



    댓글 0

Designed by black7375.