본문 바로가기
프로그래밍/C & C++

<C> 기본예제 Day01 - Hello world!

by 리나그(ReenAG) 2020. 12. 21.
728x90
반응형

항상 처음이 제일 쉽고 끝맺는 것은 어렵기 마련이니까 이걸 끝까지 하겠다고는 못하겠지만 어찌됬건 과거의 기록을 한번 정리해보는 차원에서 C의 기본적인 예제들을 소개함과 더불어서 강의식으로 내가 아는 것들을 써내려 가보도록 하겠다.(대학에 입학해서는 조금 더 알게 된 내용들도 풀어볼까 한다. 뭐가 어찌되던 기억을 남기는 것이 중요하다고 했다.)

 

참고로, 소개될 예제는 C언어이다. C++예제는 아니다.

비슷한듯 다른 2개의 언어를 구분 짓기 좋은 방법중 하나는 처음의 헤더파일과, 쓰는 입출력 방식를 눈여겨 보는 것이다.

 

c라면, 표준적으로 STandDard Input / Output 의 줄임말인, stdio.h 를 이용할 것이다.

#include<stdio.h>
int main(){
      printf("hello world!");
      return 0;
}

 

c++이라면, 표준적으로 Input / Ouput STREAM, iostream을 이용할 것이다.

#include<iostream>
int main(){
      std::cout << "hello world!";
      return 0;
}

 

C와 C++의 제일 큰 차이라고 하면, Class와 STL을 꼽을 것 같다. C까지는 최적화를 하기 위해서 직접 구현해야 하는 작업이 많다. (예를 들어 strcmp를 개조해서 끝의 포인터를 반환하게 한다던지) 라이브러리의 개수도 C++에 비해서는 조금 빈약하다. (그래도 많다.) C라는 언어는 C++보다도 빠른 속도를 위해서 시스템 프로그래밍에 들어가는 경우가 많다고 교수님이 이야기 해주기도 했다. 다만 이 녀석은 결정적으로 완벽한 OOP를 지원하지는 않는다. Struct와 함수를 조합해 비슷하게 구현할 수는 있지만, 결국 나름의 C스타일로 해결하게 된다.

그런 반면에 C++을 Python뺨치는 종류의 라이브러리, 그리고 C에 비해 훨씬 정결한 코드와 기본 라이브러리가 반겨준다. vector 클래스, foreach문 등 의외로 java같은 편의성을 제공해주는데, 그런 편의성과 함께 포인터라는 강력한 무기를 다루게 해주는 것은 정말 매력적이다. 사실 속도를 제외하고 보면 여러모로 C언어의 상위호환인데, 뭐 이름이 C++인데 뒤지면 섭해서 그럴지도 모르겠다.

 

아무튼 다시 복습으로 돌아와서 처음의 c언어 예제를 컴파일해서 작동시켜보면, hello world!라는 글자가 쓰여있을 것이다.

그럼 복습 차원에서 소스코드에 쓰인 것이 무엇을 의미하는지 각각 적어보도록 하겠다.

#include<stdio.h>

 

1줄의 #include<stdio.h>는, "<>안에 쓰인(여기선 stdio.h) 헤더파일을 불러와라" 라는 의미이다. 기억하기로, 실제로는 그 c파일 위에 stdio.h의 모든 내용이 위에 적힌 것처럼 간주되어 컴파일 되는 것으로 알고 있다. 아무튼 이 이야기는 좀 뒤에가서 자세히 하고, 여기서는 "stdio.h라는 무언가를 등록해 printf라는 것을 이용할 수 있게 되었다." 정도의 결말만 알고 있도록하자.

int main(){ }

 

3줄의 int main()은 프로그램이 시작하는 곳으로, 프로그램을 작동시키면 이곳에서부터 차례대로, 한칸씩 아랫줄을 향해 나아가며 할당된 명령을 수행한다. 뒤에 달린 중괄호는 3줄에서 시작해 6줄에서 끝나는데, 이게 프로그램을 시작하는 함수의 범위를 나타낸다.

모든, 말 그대로 모든 C언어로 작성된 프로그램은 main이라고 이름 붙여진 함수에서 시작한다 이 사실을 잘 알고 있자 엄청 중요하다!

printf("hello world!");

 

4줄의 printf는 hello world!라는 문자열을 출력하라는 뜻이다. formated print, 형식있게 출력하라는 뜻인데, 뭐가 형식인지 지금은 알 필요는 없다.

return 0;

 

5줄의 return 0;는 "0이라는 값을 반환하라" 라는 뜻이다. int main()에서 쓰였으므로, 프로그램을 시작시킨 함수를 0이라는 값을 반환하며 종료하게 만들고, 결국 프로그램의 끝내게 된다. 간단히 말해 프로그램을 끝낸다. 일반적으로 제대로 끝났으면 0을 반환시키는 것이 맞다. 그 외의 상황에 대해서는 다음에.

 

그리고 계속 쓸 때 마다 ; 를 쓰는 것이 보일 것이다. 이 특수문자는 세미콜론 이라고 하고, 언제나 하나의 명령이 끝났음을 알리기 위해 항상 중괄호 기호 2개 { , } 의 시작과 끝을 제외한 거의 모든 줄의 끝에 써야한다. 모든 줄마다 써야하는 것은 아니지만, 왠만하면 세미콜론을 붙이는 것에 습관을 들이는 것을 추천한다. 특히 c, c++, java등의 언어를 주로 이용할 것이라면.

 

대망의 첫 hello world 예제를 끝내보았다. 역시 교육받을 때는 쉬웠는데, 막상 다시 적고 써보려니 어렵다.

 

그리고 네이버 블로그에 있던 내용을 이식했는데, 이쪽이 좀 더 나은 듯하다.

 

728x90
반응형