C언어

1. 구조 (2)

그럼 이제 Hello World 프로그램을 더 자세히 탐구하여 보자.

Ctrl+n키를 누르고 다음 코드를 작성하자.

#include <stdio.h>
int main(){
    printf("Hello World");
    return 0;
}

다음 코드를 Dev C++에 넣고 컴파일 후 실행이라는 버튼을 누르면 저장하기 버튼이 뜬다. C++파일에서 C파일로 바꾸고 확인을 누르면 검은색 창에 Hello World 라고 뜰 것이다. 그후 Compilation Time, with Return Value 도 있을 수 있는데 그 중 Compilation Time은 프로그램이 컴파일이라는 문법 체크 과정을 거치고 실행한다. 그 중 컴파일할 때 걸린 시간을 뜻한다.

3행에 있는 "Hello World"를 다른 것으로 바꾸어 보자. 물론 printf("");는 유지해야 한다. 바꾼 내용이 출력될 것이다.

그러면 우리는 결론을 내릴 수 있다.

아, printf()는 그 안에 있는 내용을 출력하는 것이구나.

사실 이 생각은 반만 맞고, 반은 틀렸다. printf()는 괄호 안에 들어간 ""안에 들어간 내용만을 출력한다. 그 밖에도 내용을 쓸 수 있는데, 규칙이 있다. 그 내용은 2. 변수에서 자세히 배울 것이다. ""로 감싼 것을 문자 여러개로 구성된 것이라 해서 문자열(string)이라고 한다. 여기서 알 수 있는 사실이 더 있다.

문장을 끝내면 세미콜론을 붙어야 하는구나.

전처리기 사용(코드 맨 윗쪽에만 위치할 수 있는 #으로 시작하는 것), 함수 선언 이외에는 모두 ;를 붙어야 한다. 컴퓨터는 줄 수 구분으로 구분하지 않고 세미콜론으로 구분한다.

따라서 다음과 같은 코드도 위 코드와 똑같은 기능을 가진다.

#include <stdio.h>
int main() { printf("Hello World"); return 0;}
#include <stdio.h>
int main(){
    printf("Hello World")
    ;
    return 0;
}
#include <stdio.h>
int main()
{
    printf("Hello World");
    return 0;
}

그럼 우리는 printf()의 사용법을 알았다. 그런데 #include <stdio.h>를 빼고 실행하면 printf() is not declared in this scope 와 같은 에러 메세지가 출력될 것이다. 즉 printf()함수가 정의되지 않았다는 것이다. #include <stdio.h>라고 하면 stdio.h라는 파일(.h는 헤더파일이다)을 가져와서 그 안에 정의되어 있는 printf()함수를 쓸 수 있게 한 것이다. Dev C++ 기준으로 Ctrl키를 누른 채 1행을 클릭하면 stdio.h라는 파일이 뜨면서 약 100줄 정도가 뜰 것이다. 실제로는 40줄정도에 다 작성가능하며 나머지는 설명이다. 하지만 그 파일에도 #include가 있고 그 것을 계속 트래킹하다 보면 stdio.h가 엄청나게 긴 파일이라는 것을 알 수 있다. stdio.h는 표준 입출력 라이브러리라 해서, printf(), scanf(), 등의 함수를 쓸 수 있다. 참고로

<stdio.h>= STanDard Input and Output Library

이고 <>는 표준 라이브러리(C언어 만든 사람이 기본으로 쓸 수 있게 만든 헤더파일)이고, 이 후에

#include "numberstring.h"

같은 것도 볼 수 있는데, 이는 사용자 지정 라이브러리(우리가 만든 라이브러리)에 쓰인다.

int main()은 함수이다. printf()도 함수인데 너무 다르다. main()은 함수 정의이다.

#include <stdio.h>
void addup(int a, int b){
    printf("%d", a+b);
}
int main(){
  addup(4,5);
  printf("Hello World");
  return 0;
}

이해를 못하여도 상관이 없다. 다음에 2. 변수, 3. 연산자, 6. 함수에서 자세히 배울 것 이다. 그런데 2행에서 4행까지는 함수를 정의한다. 그리고 6행에서는 그 함수를 호출한다. 어느 함수든 쓸려면 정의를 하고,  그 후 어디든 쓸 수 있다. addup()이라는 함수를 만들어야지 쓸 수 있고, 하지만 만들어도 안 실행시키면 안 작동한다. 하지만 main은 시스템 기본으로 동작한다. 어려운 개념일 수 있지만 이렇게 이해하면 된다.

addup을 정의하고, main에 들어가는 것이 실행되니 거기서 쓰자.

다음 시간에는 구조 마지막 시간으로 이스케이프 시퀸스와 주석에 대하여 더 자세히 알아볼 것이다.

댓글

댓글 본문