헤더 파일+main() 함수+서식 문자
1. 헤더파일
기존의 블로그분들께서 운영하시는 C언어의 문법에 대한 설명들은 많이들 보셨으리라 생각합니다.
문법에 포커스를 두긴 하지만, 프로그램의 흐름과 원리, 알고리즘에 중점을 두면서 설명하고자 강좌식으로 연재하는 것은 아니지만 코드 분석 포스팅을 주기적으로 올리려고 합니다.
C언어의 문법을 익히시거나 흐름을 깨우치는데 도움이 되시길 바랍니다.
자! 이제 한번 시작해보겠습니다.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i;
printf("정수를 입력하시오:");
scanf("%d",&i);
printf("%c\n",i);
return 0;
}
C언어를 처음 시작하면 위의 코드를 자주 보셨으리라 생각합니다.
한줄한줄이 어떤 의미를 가지는지 알아보도록 하겠습니다.
#include <stdio.h>
#include <stdlib.h>
#으로 시작하는 것을 전처리(Preprocessor)라고 부르며 main()이 실행되기 전에 먼저 처리한다고 생각하시면 됩니다. 그다음 include는 영어로 포함하다는 의미이며, 영어 뜻대로 현재 C언어 프로그램에 무언가를 포함하는데 그 대상이 <> 사이에 들어있는 내용입니다.
<~. h>처럼 h로 끝나는 것은 헤더 파일이라 부르며, 우리가 사용하게 될 printf(), 함수나 scanf() 함수와 같은 함수들이 정의(포함)되어있는 파일입니다. 즉, 이런 헤더 파일을 포함시켜야지 아래의 문장에서 print() 함수나 scanf() 함수를 사용함에 문제가 없어집니다.
2. main() 함수
int main() {
int i;
printf("정수를 입력하시오:");
scanf("% d",&i);
printf("% c\n", i);
return 0;
}
코드를 작성하고 있는 사람이 프로그램을 실행하게 되면, 운영체제의 언어 번역기(컴파일러)가 위의 코드를 번역하게 되며 그 결과를 화면에 보여주게 됩니다.
이때 main이라는 함수명은 고유해야 합니다. 그래야만 언어 번역기(컴파일러)가 실행되는 프로그램의 위치를 찾아가게 됩니다.
main() 함수는 프로그램의 첫 시작이며 이런 함수들은 시작과 끝을 알리는 block이라는 의미의 "중괄호"를 사용합니다.
그리고 main함수 앞에 위치한 int는 Return Type(리턴 값)이라 부르며 main 함수가 다 처리되고 끝날 때 다시 처음 호출했던 운영체제에게 정상적인 종료가 되었다고 0을 리턴해주기에 Return Type을 정수형으로 선언되어있습니다.
이제 아래의 코드까지는 이해가 되었을 듯합니다.
#include <stdio.h>
#include <stdlib.h>
int main()
{
return 0;
}
3. 변수 선언
int i;
printf("정수를 입력하시오:");
scanf("% d",&i);
printf("% c\n", i);
int i; 와 같은 구분을 "i변수를 선언했다"라고 표현합니다.
세미콜론(;)의 의미는 중괄호 안에 정의된 문장들의 단문의 끝을 알리는 기호(토큰)입니다.
변수는 값이 들어가는 방이라고 생각하시면 됩니다. 임의의 이름으로 코딩하는 사람이 정하면 됩니다. 다만 헷갈리지 않도록 구분이 되도록 이름을 만들어줘야 하며 숫자로 시작하거나 특수문자, 띄어쓰기를 사용할 수없습니다.
main 함수 앞에 위치한 int와 알파벳은 같지만 역할이 다르기에 이 경우의 int는 Data Type이라고 부릅니다.
Data Type은 변수에 들어갈 형식을 미리 정의하기 위함으로 사용되며 float(실수), double(실수), char(정수)와 같은 Data Type이 사용될 수 있습니다.
예를 들어
int number=10; //정수 값이 들어가는 number라는 방을 만들고, 상수값 10을 대입 및 초기화했다고 표현할 수 있습니다.
double pi; //실수 값이 들어가는 pi라는 방을 만들기만 하고
pi=3.141592; //아래에서 3.14 1592라는 실수 값을 대입했다고 표현할 수 있습니다.
여기서 = 기호는 대입 연산자이며, 오른쪽의 값(R value)이 왼쪽(L value)으로 넣어준다는 의미의 연산자입니다.
4. scanf() / printf() / 서식 문자
printf("화면에 출력하고 싶은 내용");
큰 따옴표(" ") 안에 단순히 출력하고 싶은 문자를 적어 출력하는 용도로 사용할 수도 있지만 아래의 서식 문자 표의 내용과 함께 사용되는 경우가 많습니다.
scanf("% d",&i);
이 문장은 화면상에서 입력 대기상태에서 사용자가 직접 입력값을 넣으면 그 값을 i변수에 정수 값으로 입력받는 내용의 함수입니다.
printf() 함수도 그렇지만 scanf() 함수도 큰 따옴표 사이에 출력 문자나 입력 시 나타날 문자를 입력할 수도 있지만 아래의 서식 문자와 함께 사용되는 경우가 많습니다.
즉 scanf("% d", & i);에서 % d는 정수를 의미하는 서식 문자이며, 입력된 정수는 &i를 사용하여 변수 i의 주소(&의 역할)에 대입하는 기능을 합니다.
예를 들면,
double num1;
printf("실수를 하나 넣으세요\n");
scanf("% lf", &num1);
printf("입력받은 실수는 % lf입니다.", num1);
>> 실수 값을 입력받기에 num1변수의 선언을 double type으로 선언하였고 단순 출력인 "실수를 하나 넣으세요"라는 문구를 화면에 출력하게 됩니다.
printf("실수를 하나 넣으세요\n");
큰 따옴표 안에서 가장 마지막 (역슬러쉬)\n은 한 줄 내린다는 의미 즉 Enter와 같습니다.
scanf("% lf", &num1); //3.14를 입력했다고 가정하겠습니다.
화면상에는 입력 커서가 깜박깜박 거리는 상황에서 실수하나(% lf)를입력하면 그 숫자는 num1의 주소로 대입됩니다.
주소로 대입된다는 의미는 C언어 내용 중 포인터 내용을 다루게 된다면 그때 다시 언급하겠습니다.
printf("입력받은 실수는 % lf입니다.", num1);
화면에는 입력받은 실수는 3.14입니다. 이렇게 출력됩니다.
조금 더 응용해보면, printf("입력받은 실수는 % lf이고, % d 번째 입력입니다.", num1,1 );이렇게 변경해보면 화면에는 "입력받은 실수는 3.14이고, 1번째 입력입니다."이렇게 출력될 것입니다.
서식 문자의 개수와 뒤에 출력되는 대상의 개수는 일치해야 하며 Data Type도 동일해야 합니다.
나중에 알고 보면 간단한 코드이지만, C언어는 처음이 중요하며 프로그램의 흐름과 각 토큰들의 의미를 알고 있으시는 것이 중요합니다. 이해가 안 되시는 부분이 있다면 댓글로 남겨주시면 친절히 답변드려보겠습니다.
'→ 지식나눔 > C언어 코드 분석' 카테고리의 다른 글
C언어 반복문 활용 코드 설명 (0) | 2022.11.21 |
---|
댓글