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 프로그램을 작성하고 실행하는데 다음과 같은 과정을 거치게 됩니다.
- 에디터로 C 프로그램 작성.
- 작성된 프로그램을 컴파일 함. 에러가 있을 경우 컴파일러가 알려주고 없으면 실행파일을 만들게 됨. PC라면 목적 콛가 만들어짐.
- 타이핑 하여 실행. PC는 링커에 의해 실행 파일이 만들어지는 것이 우선.
UNIX와 IBM PC에서는 다소 차이가 있지만 본 글은 전체적인 내용에 가까우니 생략하도록 하겠습니다.
'IT > C 언어' 카테고리의 다른 글
C언어 기억 클래스의 종류 4가지 (0) | 2020.08.21 |
---|---|
C언어 입출력 함수 - 버퍼드 입력, 버퍼되지 않는 입력 알아보기 (0) | 2020.08.19 |
C언어 - 함수의 정의와 함수 작성방법 (0) | 2020.08.14 |
C언어 연산자 종류와 우선순위 (왕초보 개념잡기) (0) | 2020.08.13 |
C언어 변수의 정의와 종류 알아보기 (0) | 2020.08.13 |
댓글