안녕하세요
피터입니다. 오늘 강의에서는 C언어에 대해 차근차근 알려드리겠습니다.
현재 디바이스에 들어가는 펌웨어(firmware)나 임베디드(embedded) 분야에서 독자적인 영역을 구축하고 있으며, C언어는 현존하는 고급 언어중에 가장 컴퓨터를 잘 이해할 수 있는 언어입니다.
C언어는 오래되서 별로 배울 가치가 없다고 생각하시는 분들이 계시다면 아직 C언어를 배워야 할 이유가 충분히 있다고 말씀드리고 싶습니다. C언어는 컴퓨터를 이해하는 데 있어서 굉장히 중요한 언어이기 때문입니다.
C언어가 컴퓨터에 대해 가장 잘 이해할 수 있다는 점에 대해서는 강좌를 진행하면서 중간 중간 설명드리겠습니다.
자! 그럼 본격적으로 시작해볼까요~
프로그래밍 공부에서는 역시 코딩이 빠질 수 없겠죠?
우선 세계에서 가장 유명한 프로그램인 Hello world를 소개합니다.
#include<stdio.h>
int main(void)
{
printf(“Hello world\n”);
return 0;
}
위에서 보시다시피, 화면에 “Hello world”라는 텍스트를 출력하는 몇 줄 되지 않는 짧은 코드이지만
여기에서 우리는 많은 것을 배울 수 있습니다.
참고로 C언어에서 #으로 시작하는 모든 구문은 전처리기 지시자를 뜻합니다.
전처리란 컴파일러가 코드를 기계어로 변환하는 작업을 하기 전에 처리하는 일련의 작업들을 말합니다. 전처리기에 대한 자세한 설명은 향후 C컴파일 과정을 설명할 때 하도록 하겠습니다.
stdio는 Standard Input Output의 줄임말이며 표준 입출력 라이브러리입니다. 이 라이브러리에는 printf 를 포함해서 수많은 표준 입출력 함수들이 정의되어 있습니다.
stdio.h를 포함시키는 이유는 뒤에 나오는 printf 함수를 컴파일러에게 미리 알려주기 위해서입니다.
컴파일러는 정의되지 않은 함수 호출을 문법 오류(syntax error)로 인식하기 때문이죠.
이 부분에 대해서는 나중에 함수 부분을 설명하면서 다시 자세히 말씀드리겠습니다.
이제 printf 구문을 보겠습니다.
이 부분이 바로 화면에 Hello world를 출력하는 부분이라는 것, 다들 짐작하셨나요?
printf 같은 표준 라이브러리에 포함된 함수들은 Microsoft에서 친히 상세한 사용법을 제공해줍니다.
그게 바로 Microsoft Developer Network, MSDN인데요,
구글에서 msdn printf 라고 검색해볼까요?
그럼 아래와 같은 화면이 뜨는걸 확인하시게 될텐데요, ↓
앞으로 표준 라이브러리에 대해 궁금증이 있을때 이런식으로 msdn을 참조하시면 공부하시는데 큰 도움이 될거라 장담합니다.
설명을 보시면 입력값으로 const char* format [, argument]... 를 취하고 있습니다.
const char*는 문자열 상수를 의미하고,
바로 뒤에 나오는 … 는 가변 인자를 뜻해요. (이 부분도 뒤에서 자세히 다뤄드리겠습니다.)
printf(“Hello world\n”); 구문은 화면에 “ “ 안의 문자열을 출력한다는 의미입니다.
\n을 제거하고 실행하여 결과를 비교해보시면 이해가 쉽게 되실겁니다.
return 0; 구문은 main 함수를 종료하고 빠져나가면서 0이라는 결과값을 돌려준다는 뜻입니다.
main 함수는 OS(Operating System) 에서 호출되는 프로그램의 진입지점이기 때문에 main 함수가 종료되면 프로그램이 종료됩니다.
이렇게 몇 줄 안되는 짧은 코드를 살펴보았는데요. 생각보다 공부할게 많지 않나요?
앞으로의 강좌는 문법(Syntax)적인 부분 보다는
여러분들이 작성한 코드가 실제로 어떻게 컴퓨터가 이해하고 동작하는지에 대해 중점을 두고 해나갈 예정입니다.
본격적으로 다음강의부터, 보다 본질적인 원리와 개념에 대해서 쉽게!! 풀어드리도록 하겠습니다.
감사합니다.
여러분의 댓글은 저에게 크나큰 힘이 됩니다. 오류 및 의견 주시면 감사하겠습니다.
- Peter의 우아한 프로그래밍 강의
'프로그래밍 > C' 카테고리의 다른 글
[C언어 강좌-5] 상수 (Constant) (0) | 2017.01.26 |
---|---|
[C언어 강좌-4] 자료형 (DataType) (0) | 2016.12.06 |
[C언어 강좌-3] 변수(Variable)의 이해 (0) | 2016.12.02 |
[C언어 강좌-2] C언어 컴파일 과정 (15) | 2016.11.21 |
쉽게 풀어보는 프로그래밍 주요 개념잡기 (3) | 2016.11.08 |