C

C언어를 가르칩니다.

C C언어를 가르칩니다.

C 프로그램의 개략적 동작 과정

C 프로그램의 동작 과정을 간단한 프로그램을 통해 개략적으로 알아봅니다.

다음 소스 코드를 입력하여 실행합니다. 한국어 키보드는 슬래쉬를 원화 기호(W에 줄 그인 것)으로 표기하는 경우가 많습니다. 뭘 쓰든 상관없습니다. 단, 복사-붙여넣기를 하면, HTML에 쓰이는 특수 기호가 코드에 들어가 오류가 일어날 가능성이 매우 높습니다. 그러니까 직접 치세요.

#include <stdio.h>
int main(void)
{
  int dream;
  //이러쿵 저러쿵
  dream=180;
  int harry_tall;
  printf("Type how tall harry is(less than 180cm): ");
  scanf("%d",&harry_tall);
  /*blabla
    printf("Hello, World!");
  */
  printf("Harry: Ron! ");
  printf("I wanna be %dcm tall!\n", dream);
  printf("Ron: But you are %dcm tall.", harry_tall);

  return 0;
}

실행 결과는 다음과 같습니다(콘솔 창이 바로 사라진다면 return 문 앞에 getchar();를 입력하세요.).

Type how tall harry is(less than 180cm): (입력값)

Harry: Ron! I wanna be 180cm tall!

Ron: But you are (입력값)cm.

동작 과정

프로그램이 어떻게 흘러가서 저런 결과가 나왔는지 알아봅시다.

#include <stdio.h>

컴파일러에게 'stdio.h 파일을 포함시켜라'라고 시키는 문장입니다. #include를 전처리기(preprocesser) 지시자라 하는데, 당장은 몰라도 별 상관 없습니다. stdio는 STanDard Input Output의 줄임말로, 표준 입출력이란 뜻입니다. 키보드 입력/모니터 출력/파일 읽고 쓰기 등의 함수를 포함하고 있습니다. 끝에 붙는 .h 확장자는 헤더 파일이라는 뜻입니다. 당장은 몰라도 됩니다.

int main(void)

C 프로그램은 언제나 main 함수(Function)에서 시작해서 main 함수에서 끝납니다. main(주된, 중심의, 본격적인)이라는 이름에서 알 수 있죠. int는 main함수가 int형(정수형) 값을 리턴(반환)한다는 뜻입니다. main은 함수 이름이고, 소괄호()는 main이 함수임을 알려줍니다. void는 main 함수가 인자(Argument)를 받지 않음을 알려줍니다. 원래 많은 함수는 전달 인자를 쓰지만, 이것은 간단한 프로그램이므로 받지 않아도 됩니다. 자세한 건 나중에 배웁니다.

{

​여는 중괄호입니다. 함수의 몸체가 시작됨을 나타냅니다.

​int dream;

int형 변수 dream을 선언(declare)합니다. 변수 선언에는 언제나 자료형과 이름과 세미콜론(;)이 있어야 합니다.

​//이러쿵 저러쿵

​주석입니다. 컴파일러는 //뒤에 있는 것을 주석으로 취급하여 무시합니다. 한 줄만 쓸 수 있습니다.

dream=180;

아까 선언한 dream이라는 변수에 180이라는 값을 넣습니다(초기화라고도 합니다). C에서 =는 등호가 아니라 오른쪽에 있는 값을 왼쪽에 넣는다는 뜻입니다. 그래서 3=a; 라고 쓰면 오류가 납니다.

int harry_tall;

int형 변수 harry_tall을 선언합니다.

printf("Type how tall harry is(less than 180cm): ");

안에 들어있는 문자열을 화면에 출력하는 printf()함수를 호출합니다. printf()함수에는 자동 줄바꿈 기능이 없어서 커서는 다음 줄로 넘어가지 않고 출력된 줄에 그대로 남습니다.

scanf("%d", &harry_tall);

습니다. scanf()함수는 첫 번째 인자에서 설정한 형식의 값을 두 번째 인자에 넣습니다. 여기서 %d는 숫자를 받는다는 뜻입니다. 즉, 이 줄은 '숫자 입력값을 받아 harry_tall에 넣어라'라고 시키는 겁니다. harry_tall앞에 왜 &가 붙는지는 나중에 포인터를 배우면 알게 됩니다. 일단은 넣어야 한다고만 알고 계세요.

/* blabla

   printf("Hello, World!");

*/

주석입니다. //와 달리 여러 줄을 쓸 수 있습니다. 안에 있는 모든 것을 무시하므로 Hello, World!가 출력되지 않습니다.

printf("Harry: Ron! ");

안에 들어있는 문자열을 화면에 출력하는 printf()함수를 호출합니다. 

printf("I wanna be %dcm tall!\n", dream);

printf()함수를 다시 호출하여 커서가 있는 부분부터 해당 문자열을 출력합니다. \n은 다음 줄로 넘어가라는 뜻입니다. 따라서 커서는 다음 줄의 맨 첫 부분으로 넘어갑니다. %d는 dream의 값을 표시할 방식과 위치를 결정합니다.

printf("Ron: But you are  %dcm.", harry_tall);

printf()함수를 다시 호출하여 커서가 있는 부분부터 해당 문자열을 출력합니다. %d는 harry_tall의 값을 표시할 방식과 위치를 결정합니다.

return 0;

값 0을 리턴합니다. main을 비롯한 모든 함수는 자신을 호출한 것에게 어떤 값을 리턴합니다. 그럼 main 함수는 값 0을 누구에게 리턴하는 걸까요? 운영체제에게 리턴합니다. 아직은 자세히 알 필요 없습니다.

}

​닫는 중괄호입니다. 함수의 끝을 나타냅니다. 아까 C 프로그램은 main함수서 끝난다고 했죠. main 함수의 끝을 알리는 }에 도달했으므로 프로그램도 종료됩니다.

 

C 프로그램은 거의 다 이렇게 진행됩니다. 변수를 선언하고, 변수를 사용하고, 사용자에게 입력값을 받고, 다른 함수를 호출하여 뭔가를 하고, 프로그램이 종료됩니다. 이 과정을 크게 벗어나지 않습니다. 단지 복잡한가, 간단한가만 다를 뿐입니다. 이 토픽을 전혀 이해하지 못하셔도 상관없습니다. 어차피 곧 다 배울 테니까요. 지금까지 개략적인 진행 과정을 알아봤습니다.

 

.

댓글

댓글 본문
작성자
비밀번호
버전 관리
truelight
현재 버전
선택 버전
graphittie 자세히 보기