본문 바로가기
IT/C 언어

C 언어의 고유한 10가지 특징

by 뽀짝뉴스 2020. 8. 7.

C 언어를 처음 접한 때는 꽤 오래됐습니다.

 

정신없이 살다보니 내가 이런걸 했었지라는 어렴풋한 흔적만 남은게 아쉽기만합니다.

그래서 기초를 다질 겸, 어딘가 표류하고 있는 입문자에게 도움이 될 겸 필요한 개념들을 하나씩 정리해보려고 합니다.

 

C 언어는 고유한 특징이 있으며 그 중 대표적인 10가지는 기본이므로 우선 한번 머리에 각인되면 전체적인 그림도 파악하기 쉬우니 이해하고 넘어가길 바랍니다.

 


첫번째, C 프로그램은 함수로 구성됨

 

프로그램은 main(), sum() 아니면 sub() 함수로 구성되며 모든 함수는 반드시 { 로 시작해서 }로 종료됩니다. 각각의 함수는 특정한 기능을 수행하는 프로그램이고요.

 

가령 아래를 보면 main() 함수는 주 프로그램이고 sum() 함수는 주어진 정수값들을 더하는 기능을 실행합니다. sub() 함수는 주어진 정수값들을 빼는 기능을 수행하는 프로그램이 됩니다.

 

함수는 파라미터 즉 인수를 사용할 수 있는데, 인수는 함수간에 자료를 전달하는 역할을 수행합니다. 함수명 다음에 괄호안에 표현하면 됩니다.

 

인수가 필요하지 않을 때는 함수명 다음에 빈 괄호만 쓰면되고요. 너무 다닥다닥 붙어있는 것 같지만 그래도 보면 이해가 갈겁니다. 하나 더 살펴보면 tot( )라는 함수에서 인수를 보면 이렇게 됩니다.

 

  • tot( ) ; - 인수 없음
  • tot(int a) ; - 인수가 하나임
  • tot(int R, float RR) - 인수가 두개임

 


두번째, C 프로그램은 반드시 하나의 main( ) 함수가 존재해야 함

 

C 언어 프로그램은 두 개 이상의 함수로 구성될 수 있는 것은 물론이고 각 함수의 이름은 프로그래머가 임의로 정할 수 있습니다. 하지만 두 개 이상의 함수로 구성된 프로그램을 실행할 때 프로그램은 어떤 함수부터 동작 해야할지 알 수 없는 문제가 발생합니다.

 

그러므로 두 개 이상의 함수로 구성된 C 언어 프로그램에서 main( ) 함수는 반드시 존재해야하는데 프로그램의 실행순서는 main( ) 함수의 첫 번째 명령어부터 차례로 실행됩니다.

 

C 프로그램 → main( ) 함수
              → 또 다른 함수
              → 그것과 또 다른 함수

 

결국 C 프로그램은 최소한 main( ) 함수는 존재해야 하고 또 다른 함수는 필요하면 작성하면 된다는 겁니다.

 


세번째, 함수는 {로 시작해서 }로 끝남

 

C 언어의 함수는 반드시 {로 시작해서 }로 종료되어야 합니다.

함수를 구성하는 변수 선언, 대입문 또는 제어문은 {와 } 사이에 적혀야 하고 함수가 호출될 때 실행되는 순서는 { 의 다음 명령문부터 시작되어서 }를 만날 때 호출한 함수로 다시 돌아갑니다.

 

미흡하지만 예시를 계속 가져오는 중입니다. main( ) 함수로만 구성된 이 아이는 셋째 줄의 { 로 시작해서 다섯째 줄의 } 에서 끝이납니다. 전체 함수안의 수행문은 printf("seoul\n"); 명령문 하나인 것이고 실행하고나면 그에 따라서 결과가 나옵니다. 당연히 [seoul]이 출력되겠죠.

 


네 번째, 수행문 끝에는 반드시 ;(세미콜론)이 있어야 함

 

프로그램이 만들어질 때 수행문의 경우 끝남에 있어서 반드시 세미콜론이 들어가야 합니다. C 언어에서 ; 가 나왔다면 종료됐다고 받아들이면 됩니다. 텍스트라서 잘 안보이지 않았을지 모르지만 세 번째의 seoul 마지막의 ; 도 없었다면 바로 오류각입니다. 요즘 시대에 너무 사소한 걸로 문제가 발생하지 않나 싶겠지만 뿌리가 가장 중요한 법이니까요.

 


다섯번째, C 언어에서는 행의 개념이 없음

 

C d언어에서 모든 수행문은 세미콜론으로 끝나기 때문에 한 줄에 많은 수행문을 작성해도 모두 구분이 가능합니다. 그러니까 한 줄에 여러개 작성이 가능한거죠. 줄을 나누지 않아도 ; 얘가 있으면 만사 오케이입니다.

 

s = 12 ; c = 34 ; v = 56 ; 아셨겠지만 이런식이 허용된다는 겁니다.

 

예외가 있습니다. 예약어나 문자열의 토큰은 따로 행을 나눠 코딩하면 문제가 생깁니다. 토큰은 C 프로그램을 구성하는 의미있는 모든 문자와 열을 말합니다.

 


여섯번째, C 프로그램은 대입문, 제어문 & 함수로 구성됨

 

BASIC에서는 PRINT 문은 하나의 명령문으로 인식되지만, C 언어에는 명령문이 아닙니다. 생김새도 다르고요. print( )니까요. 물론 문자를 출력된다는 건 같습니다.

 


일곱번째, 주석문은 \* 과 *\ 사이에 씀

 

C 언어에서 주석문은 프로그램안에서 그 사이에 작성된 모든 것들을 주석으로 간주합니다. 컴파일되지 않아요. 게다가 주석문은 어디에나 적는 것이 가능하고 여러 행에도 작성 할 수 있습니다.

 


여덟번째, 변수는 반드시 선언한 후에 사용해야 함

 

C 프로그램에서 사용되는 변수 모두는 사용하기 전에 명칭과 타입을 반드시, 반드시 먼저 선언해야 합니다.

 


아홉번째, 정수 표현의 룰

 

  • 수치정수

수치정수는 연산에 사용되는 수치를 표현한 것입니다. C 언어에서는 네가지가 있습니다.

 

8진수 - 0이 맨 앞에 붙음
16진수 - 0x가 맨 앞에 붙음
10진수 - 우리가 모두 아는 그 십진수
부동 소수점 상수 - 실수값을 나타내는 방법, 쉽게 말해 소수점을 표시함

 

  • 문자정수

각 문자에 해당하는 문자 코드값을 의미합니다. 문자 코드는 ASCII 코드를 사용합니다.

 

  • 개행문자열

C 언어에서 역슬래시 = \ 로 시작하는 문자열은 본래 문자의 의미를 잃고 특수문자로 사용합니다. 이게 바로 개행문자입니다. 하나의 문자로 취급되고 화면에는 안보여도 의미를 쉽게 파악할 수 있습니다.

 

제가 따로 열심히 정리해봤습니다.

 

 

  • 문자열 정수

문자열 정수는 큰따옴표라고 불리는 이중 인용부호로 표현되는 0 아니면 그 이상의 문자열을 말합니다. 기술적으로 말하자면 문자 배열에 속하고 문자열의 마지막에 역슬래시 + 0 (\0)을 넣어서 끝을 나타냅니다.

 

따라서 문자열을 저장하기 위해서 실제로 요구되는 기억 공간의 용량은 문자열의 문자수보다 하나 더 커야만 합니다. 자세한 내용은 따로 설명해야 할 정도이니 이정도에서 넘어갑시다. 개요란 이런 맛 아니겠습니다.

 

  • 기호정수

기호정수는 어떤 수치를 의미 있는 명칭으로 사용할 때 씁니다.

 

예시로 간단하게 알아보겠습니다.

 

처음에 이렇게 시작했다면 문자열 FALSE와 TRUE가 기호 정수가 됩니다. 관련된 프로그램에서는 각각 정수값 5와 1로 사용되는 셈이죠.

 

기호정수는 대문자를 사용하는 것으로 구분할 수 있고 함수 밖에서 정의 됩니다.

 


열번째, C 프로그램의 작성과 실행에 대하여

 

벌써 마지막인데 10번째는 특징이라기보다 개요의 마지막이라고 생각하면 편합니다.

 

C언어는 컴파일형 언어기 때문에 C 프로그램을 작성하고 실행하는데 다음과 같은 과정을 거치게 됩니다.

 

  1. 에디터로 C 프로그램 작성.
  2. 작성된 프로그램을 컴파일 함. 에러가 있을 경우 컴파일러가 알려주고 없으면 실행파일을 만들게 됨. PC라면 목적 콛가 만들어짐.
  3. 타이핑 하여 실행. PC는 링커에 의해 실행 파일이 만들어지는 것이 우선.

UNIX와 IBM PC에서는 다소 차이가 있지만 본 글은 전체적인 내용에 가까우니 생략하도록 하겠습니다.

 


 

댓글