본문으로 바로가기

C :: C언어의 기본

category Programing/C 2017. 3. 18. 00:57

C언어의 몸체! 함수에 대해 알아보자


함수는 아래와 같은 형식으로 쓰인다.


 return_type function_name(parameter list)

{

       statement sequence;

}

이 때 function_name인 함수명은 영어, 숫자, _(underscore)만을 사용해야하며 숫자를 첫문자로 가질 수 없다.


함수는 보통 생성되어도 호출하지 않으면 실행되지 않는데 오롯이 실행되는 함수가 있다.


그것은 바로 main()함수인데 이것은 c언어 코딩에서 빠져선 안되는 함수이기도 하다.


C언어! 예제를 통해 알아보자


1 #include <stdio.h>

3 int main(void)

4 {

5         printf("Hello world!!!\n");

6         printf("안녕하세요\n");

8         return 0;

9 }


왼쪽의 숫자는 줄번호를 알기 쉽게하기 위해 쓴것이니 신경쓰지 말자


1 : stdio(standard input output)라는 이름을 가진 헤더파일(.h)을 포함(include)시킨다.

    쉽게말해 C언어에 필요한 다양한 명령을 사용하기 위해서는 컴퓨터가 알아들을 수 있도록 사전을 준비해놔야 한다.

    그 사전중 표준입출력에 관한 사전을 불러온 것이다.


3 : int형으로 반환할 main()함수를 작성한것이다.


5 : printf는 출력 명령어이다. 이를 이용해 Hello world!!!를 출력하고 개행(\n)한 후 명령을 마무리(;)한다.


6 : 이또한 출력명령으로 안녕하세요를 출력하고 마무리한다.


8 : 종료코드로 운영체제에게 0을 반환한다. 일반적으로 정상종료는 0이고, 비정상적인 종료는 0이 아닌값으로 반환한다.


즉 위의 코드는 아래와 같은 결과를 출력한다.


Hello world!!!

안녕하세요


다음은 여러 함수를 사용하는 코드이다.


#include <stdio.h>


void func1(void);


int main(void)

{

       printf("main start\n");

        printf("main end\n");

        return 0;

}


void func1(void)

{

        printf("func1 start\n");

        printf("func1 end\n");

}


위의 출력결과는 아래와 같다.


main start

main end 


이처럼 func1함수의 명령들은 출력이 되지 않은것을 볼 수 있다.


main함수를 제외한 다른 함수들은 특별한 호출이 없으면 실행되지 않기 때문이다.


 #include <stdio.h>


void func1(void);


int main(void)

{

       printf("main start\n");

        func1();

        printf("main end\n");

        return 0;

}


void func1(void)

{

        printf("func1 start\n");

        printf("func1 end\n");

}


위의 출력결과는 아래와 같다.


main start

func1 start

func1 end

main end


이처럼 직접 호출해주어야 함수가 실행되는것을 볼 수 있다.


들여쓰기는 왜 하는것일까?


지금은 매우 기초적인 프로그래밍을 하고있기 때문에 소스코드가 위와같이 짧다. 하지만 우리가 만약 어떤 게임을 만든다고 했을 때


그 게임의 소스코드의 길이가 얼마나 길지 상상이 가는가? 그런 수많은 코드는 한명이 만드는 것이 아니다. 함께 작업을 할 때


서로의 코드를 빠르게 이해해야지 작업이 수월하다. 들여쓰기를 통해 어떤 명령문이 어떤 함수 안에 있는것인지 쉽게 파악할 수 있게


도와준다. 그렇기 때문에 들여쓰기하는 습관은 매우 중요하다.


표준라이브러리에 대해 알아보자


표준라이브러리란 C언어에서 기본적으로 제공되는 함수들을 말한다.


이는 디스크 입,출력, 문자열 조작, 수학계산 등을 처리하기 위한 함수들을 포함하며 이 함수들은 컴파일 과정에서 프로그램에 적재된다.


C컴파일러는 라이브러리 함수들을 처리하기 위해서 헤더파일에 있는 정보를 사용하게된다.


헤더파일을 명시하기 위해서는 #include(선행처리지시자)를 사용하면 된다.


이는 컴파일 이전에 전처리과정을 통해 번역된다.


컴파일에 대해 알아보자


우선 C원시 프로그램을 컴파일 하면 다음과 같은 과정을 거치게 된다.


전처리 -> 컴파일 -> 링킹


우선 전처리과정에서는 #이 붙은것과 같은 지시자를 처리한다.


그리고나서 컴파일을 통해 원시코드를 이진코드로 변환한다. 이때 변환된 파일을 목적파일이라 하며, 확장자는 .obj이다.


목적파일은 링킹과정을 통해 하나로 합쳐진 실행파일로 만들어진다.


C언어의 오류에 대해 알아보자


먼저 C언어에서 프로그래밍 도중 발생하는 오류는 크게 3가지가 있다.


1. 문법오류 : 간단히 말하면 문법에 맞지 않는 구문을 작성했을 때 뜨게되는 오류이다

2. 논리오류 : 컴파일을 되지만 출력결과를 출력하지 않거나 원하지 않는 결과를 출력하는 경우에 뜨는 오류이다.

3. 경고오류 : 문법적으로는 문제가 없지만 오류가 발생할 가능성이 있을 때 뜨는 오류이다


'Programing > C' 카테고리의 다른 글

C :: C언어 연산자  (0) 2017.03.18
C :: C언어 이스케이프 시퀀스  (0) 2017.03.18
C :: C언어란?  (0) 2017.03.17
C :: 포맷스트링  (2) 2017.03.12
C :: 자료형에는 뭐가 있을까?  (0) 2017.03.11