반응형

printf("Welcome, Let's C Language.");  // 초등학생도 쉽게 이해시켜주는 C언어 글을 포스팅합니다.

 

안녕하세요. 비전공자 출신 SW Test 엔지니어 Crush on Study입니다. 

오늘부터 티스토리에서도 C언어를 포스팅하고자 합니다.

 

Q. 요새 코딩이 필수가 되어가고 있는데, 무슨 언어를 배우는게 좋을까요? 파이썬이 쉽다던데 파이썬할까요?

A. 본인이 무슨 분야를 하고싶냐에 따라 접근할 언어가 다릅니다.

Python같은 경우는 요즘 핫한 A.I / 데이터분석에서 강한 모습을 보이고 있습니다. 

웹,앱서비스에 관심이 많다면 Java,Visual C/C++ 혹은 웹서비스 3대장이라 불리는 HTML/CSS/JavaScript를.

임베디드같이 하드웨어에 관련된 프로그래밍을 하고자 한다면 C/C++을.

게임을 만들어보고 싶다면 C#을.

가장 최신 트렌드 언어인 코틀린,GO 등등.

 

본인이 추구하고자 하는 분야에 따라 얼마든지 여러갈래의 길이 있습니다.

그럼에도 불구하고 C언어를 먼저 포스팅하게 된 이유.

 

- 일단 제가 C언어를 다루는 현직이라 다른건 잘 모릅니다ㅋ. 그러나, C언어를 배우면 확실히 컴퓨터의 실행 프로세스라던가 메모리 구조, 그리고 다른 언어로 영역을 넓히고자할 때의 용이함. 이러한 부분에서 강점을 드러내고 있다 생각합니다.

 

아무튼 아직도 학교 수업에서 프로그래밍을 처음 접한다하면 C언어 혹은 Python으로 시작할만큼 가장 큰 입문용어로 꼽히기도 합니다. 그럼 지겹도록 보셨겠지만 기본적인 입출력 헤더파일과 이를 실행해볼 소스코드에 대해 알아보겠습니다.

여러분들의 생애 첫 프로그래밍 화면

 

반응형
#include <stdio.h>

int main()
{
	printf("Hello, Hell!");

	return 0;
}

우리가 가장 먼저 볼 소스코드는 #include <stdio.h>입니다.

#include <stdio.h>
1. # : #은 전처리구문에서 사용되는 특수 문자로 main함수를 실행하기 전에 #처리 된 부분을 먼저 인식하고 들어가라! 라는 의미라고 생각하시면 됩니다.
2. include : 어원 그대로 '포함'을 의미합니다. 이번 소스코드를 수행할 때 컴퓨터. 자네는 바로 나, include의 뒤에 이어 나올 헤더파일을 포함해서 인식해달라.  라고 보시면 됩니다.
3. stdio.h : Standard input/output의 약자입니다. 많은 분들이 말씀하시길  '스튜디오 에이치요!!' 라고 하는데, 솔직히 저도 처음에 이거 스튜디오인줄 앎 ㅎㅎㅎ;;  약간 소스코드를 실행시킬 스튜디오 공간을 의미하는건가? 이렇게 생각해도 얼추 비슷한거 같아서 한동안 스튜디오 스튜디오 거림 ㅎㅎ.  아무튼  printf, scanf와 같은 기본적인 입출력 함수를 담고 있는 라이브러리(=헤더파일)라고 생각하시면 됩니다.

* 나중에 배우겠지만 위 소스코드에서는 <stdio.h>로 괄호처리를 했는데요. 가끔가다 보면 헤더파일을 선언할 때, " "같이 큰따옴표로 처리하는 경우가 있습니다.
<>로 표기한 헤더파일은 기본 라이브러리를 의미하고 " "로 표기한 헤더파일은 사용자가 직접 커스텀한 라이브러리를 의미합니다.

처음부터 굉장히 자세하게 설명을 한거 같은데 요약하자면 여러분들이 프로그래밍을 할 때 사용할 함수들이 잘 선언될 수 있도록 해주는게 헤더파일을 정의한다! 이다. 라고 보시면 되겠습니다.

 

다음으로 볼 소스코드는 int main() 함수와 printf & return입니다.

int main()
1. int : int는 정수형 자료를 의미하고 바로 다음 포스팅에서 다룰 내용이긴 합니다. 통상적으로 우리는 C언어에서 main함수를 선언하고자 할 때, 자료형 타입을 int로 잡곤 합니다. 이게 뭐냐면 main이라는 이름의 함수는 정수형 타입으로 정의하였다. 라고 보시면 됩니다. 
2. main() : main은 함수명입니다. 그리고 함수 옆에는 매개변수를 적는데 지금 보시면 ()에 아무것도 들어있지 않습니다. 즉, 매개변수는 비어있음을 의미합니다. 
보통 이렇게 어떤 함수를 만들고자 할 때는   1. 자료형 타입 2. 함수의 이름 3. 매개변수 선언    이렇게 3가지 구조로 이루어집니다.  즉, int main()는   1. 자료형 타입 : 정수  / 2. 함수의 이름 : main   /  3. 매개변수 : 없음 (=void) 를 의미합니다.

자료형 타입이 int로 지정된 함수의 경우는 return값을 반드시 적어줘야 합니다. void main() 이런 식이라면 자료형 타입이 비어있다는 뜻으로 반환해줄 필요가 없으나, 그 이외의 자료형 타입이 적혔다면 모든 함수의 끝에는 항상 return을 표기해줘야 합니다. 우리가 C언어에서 각 구문마다 세미콜론 ; 를 달아줌으로써 그 구문의 '마침표' 기능을 하듯이.  return도 함수의 '마침표' 기능을 한다. 라고 보시면 될 것 같습니다.

 

근데, 소스코드에서 나온 return 0;에서 0은 무엇인가? 이는 코드가 정상적으로 실행을 마쳤다 라는 의미를 담기도 하지만 아스키코드 상에서 0은 NULL을 의미하기도 합니다. 즉, 매개변수가 ()로 비어있기 때문에 반환해줄 값이 없으므로 int main함수를 return 0;으로 마침표를 찍겠다. 라고 이해하시면 됩니다. 

 

printf("Hello, Hell!");
1. printf : 가장 자주 보게될 명령어. printf입니다. printf를 적어주면 옆에 (   ) 안에 담긴 내용을 화면에 출력해라! 라는 명령을 하게 됩니다. 

굉장히 간단한 소스코드를 하나 적었을 뿐인데, 벌써부터 필자가 TMI짓을 하고 있습니다. 그렇지만 각 명령어,구문이 무엇을 뜻하는지 처음부터 TMI로 이해하고 들어가야 개념이 빠르게 잡힙니다. 단순히 학교수업을 통해서 printf("Hello, World!"); 만 기계처럼 따라해서 적었다면, 이번엔 제 글을 통해서 이 printf에 담긴 많은 의미를 곱씹어보면서 이해해가도록 해봅시다.

 

 

복습

Q1. printf 함수를 통해서 본인의 이름을 출력해보세요.

Q2. 만약 main 함수의 자료형 타입이 void 라면 return을 표시할 필요가 있다? 없다?

반응형

+ Recent posts