[C언어] 기본 개념

라임이·2022년 7월 17일
1

C언어

목록 보기
1/11

해당 C언어 시리즈는 처음 코딩을 접하는 사람들이 쉽게 이해할 수 있도록 작성되었습니다.

C언어 공부에 앞서..

무언가를 처음 배울 때 기본만큼 중요한 건 없습니다.
해당 시리즈를 통해 C언어를 공부하시는 분들이 항상 기본을 잊지 않고 한 걸음씩 나아가며 성장했으면 좋겠습니다.

개념 1. 코딩

우리는 지금부터 코딩이라는 작업을 해나갈 것입니다.
코딩은 단순하게 프로그램을 만드는 일을 의미합니다.

개념 2. 프로그램

그러면 프로그램이란 무엇일까요?

우리는 이미 일상 속에서 '프로그램'이라는 단어를 무수히 많이 들어봤습니다. 예를 들면 TV 프로그램같이 말이죠. 프로그램의 사전적 의미는 진행 계획이나 순서입니다.

즉, 컴퓨터적 관점에서 프로그램이란 컴퓨터가 수행할 작업을 미리 순서에 따라 작성한 파일이라고 볼 수 있습니다.

개념 3. 기계어

기계어는 말 그대로 컴퓨터(기계)가 이해할 수 있는 언어를 뜻합니다.

컴퓨터는 0과 1만으로 숫자를 표현하는 이진법을 사용하는데 아쉽게도 기계어는 이진법으로 표현됩니다. 그렇다면 우리는 0과 1로 프로그램을 작성해야 할까요? 만약 정답이라면 코딩은 절대 아무나 할 수 없을 겁니다.

개념 4. 프로그래밍 언어

이진수를 이용해 기계어로 프로그램을 작성하는 건 미친 짓에 가까운 일이기 때문에 우리는 사람에게 친숙한 표현법을 사용하여 프로그래밍할 수 있도록 프로그래밍 언어라는 걸 만들었습니다. 예를 들면 우리가 앞으로 배울 C언어가 있죠.

그런데 여기서 문제점이 있습니다.
우리는 프로그래밍 언어를 이해할 수 있지만, 컴퓨터는 기계어만 이해할 수 있기 때문에 소통을 할 수 없습니다. 중국어만 아는 중국인과 한국어만 아는 한국인이 서로 대화하려는 것과 같죠. 그래서 우리는 이 문제를 해결하기 위해 컴파일러라는 번역기를 만들었습니다.

개념 5. 컴파일러

프로그래밍 언어를 컴퓨터가 이해할 수 있도록 기계어로 번역 해주는 과정을 컴파일이라고 합니다. 그리고 이처럼 번역 해주는 프로그램을 우리는 컴파일러라고 부릅니다.

개념 6. 소스파일

앞으로 C언어로 프로그램을 작성할 겁니다.
이때 C언어로 작성한 파일소스파일이라고 합니다.
파일 확장자는 .c입니다.

개념 7. 목적파일

목적파일소스파일을 컴파일 시에 생성되는 파일입니다.
파일 확장자는 .obj입니다.

개념 8. 실행파일

C언어는 다른 언어와 다르게 각각의 소스파일을 컴파일하여 목적파일로 만들고, 목적파일을 연결하여 우리가 사용하는 실행파일을 만듭니다.

각각의 목적파일을 하나로 연결시켜 만들어진 파일실행파일이라고 합니다.
파일 확장자는 .exe입니다.

개념 9. 링크

이때 목적파일을 연결시키는 일링크라고 하고 링크 과정을 수행하는 프로그램을 링커라고 합니다.

개념 10. 목적파일의 존재 이유

처음에는 소스파일 1개만으로 프로그램을 작성하겠지만, 나중에 큰 프로그램을 만들 때는 소스파일을 여러 개로 나누어서 프로그램을 작성하게 됩니다.

소스파일을 수정할 때마다 모든 소스파일을 다시 컴파일하는 건 낭비이기 때문에 수정된 소스파일만 다시 컴파일하여 새로운 목적파일을 만듭니다.

이후 링크 과정을 통해 새로운 목적파일을 포함하여 실행파일을 만듭니다.

개념 11. 라이브러리

코딩을 하다 보면 자주 사용하는 기능들이 있습니다.
몇몇 기능들은 나뿐만 아니라 다른 사람들도 공통적으로 자주 사용하기 때문에 직접 구현하지 않고 편하게 사용할 수 있도록 기능을 미리 작성해놓았습니다.

프로그래머들이 많이 사용하는 기능을 미리 작성해놓은 파일라이브러리라고 합니다.

개념 12. 주석

프로그래밍 언어에는 주석이라는 개념이 있습니다.

타인의 코드를 볼 때 해당 코드의 역할이나 프로그램의 흐름을 이해하기 어려운 경우가 있습니다. 주석은 이와 같은 내용을 메모할 수 있는 기능을 제공합니다.

주석을 무작정 많이 달면 코드가 난잡해 보일 수 있지만, 적절하게 사용한다면 소스 코드를 쉽게 이해할 수 있게 해줍니다.

주석은 컴파일 과정에서 무시되기 때문에 프로그램에 어떠한 영향도 미치지 않습니다.

다음은 C언어에서 주석을 사용하는 방법입니다.

int a; // 한 줄만 주석 처리할 때는 '/'를 2개 사용합니다.
int b;

// 여러 줄을 주석 처리할 때는 '/* ... */' 형식으로 묶어줍니다.
// 회색은 주석으로 처리된 영역을 나타냅니다.
/*
int c;
int d;
int e;
*/
profile
백엔드 개발이 즐거운 4학년 컴공생

2개의 댓글

comment-user-thumbnail
2022년 7월 17일

유익해요🤗

1개의 답글