2022. 2. 9. 10:04ㆍIoT Embeded 강의
#C언어
C언어는 1972년 벨 연구소에서 만들어진 언어로 그 역사가 오래됐습니다. C언어의 특징으로는 다른 언어들보다 기계어에 가까운 상대적으로 저수준 언어에 속하며 그렇기 때문에 C언어로 짜여진 코드는 속도가 빠르고 바이너리 크기도 작아 임베디드, 모바일, 시스템 프로그래밍에서 자주 쓰입니다. 또한 다른 언어들이 결국 기본적으로 C언어를 바탕으로 하고 있어 C언어를 배우면 다른 언어를 배울 때 큰 도움이 됩니다. 단점으로는 그만큼 융통성이 다른 언어보다 적고 프로그래머가 사소하게 신경써야하는 부분이 많아 입문하는 사람에게는 조금 어려운 언어일 수 있습니다. 저는 임베디드 강의를 듣기 때문에 C언어를 필수적으로 해야합니다. 임베디드 시스템은 일반 컴퓨터보다 메모리나 CPU성능이 제한되어 있는 경우가 많아 소프트웨어에서 최대한 효율적으로 성능을 내면서 메모리 관리를 해줘야 하기 때문입니다. 그럼 C언어를 처음 배우면서 알아야 하는 기본적인 구조를 정리하겠습니다.
#include <stdio.h>
int main()
{
printf("Hello world");
return 0;
}
먼저 이와 같이 작성된 코드를 소스 코드라고 합니다. 위에서부터 차례대로 정리하겠습니다.
1. 전처리기
먼저 전처리기 부분입니다. 가장 상단의 #include <stdio.h> 부분입니다. #include 외에도 #define 과 같은 다른 코드들도 들어갈 수 있습니다. stdio.h 표준 입출력 라이브러리로 Standard input output의 약자이며 확장자는 .h 로 헤더파일입니다. 헤더파일은 일종의 라이브러리로 보시면 됩니다. 여기에는 하단부에 있는 printf함수의 정의와 선언이 담겨 있습니다. 모든 함수는 사용하기 위해서는 먼저 선언와 기능을 정의하는 코드를 작성해야 하는데 자주 쓰는 함수들을 매번 코드를 작성하기 귀찮으니 이렇게 헤더파일에 미리 정리한 뒤에 헤더파일만 지금 프로그램에 포함시켜주기만 하면 그 함수를 사용할 수 있게 만든 것입니다. stdio.h는 기본적으로 항상 포함하기 때문에 외워두시는게 좋습니다.
2. main 함수
C언어에서 프로그램 실행 시 가장 먼저 실행되는 함수이며 본체라고 생각하셔도 좋습니다. main 함수에서 기능들을 명령어로 코딩하여 실행 시 그 명령이 수행됩니다. 함수의 기본적인 구조를 정리하면서 함수를 쓰는 법을 설명하겠습니다.
함수 기본 구조
자료형 함수이름 (변수)
{
}
-----------------------------------------------------------------------------------------------------------------------------------
int MyFunction_A (int x)
{
}
1) 먼저 함수의 자료형을 정의해줍니다.
2) 이 후 함수 이름을 써줍니다. 식별자 규칙에 맞게 사용하시면 됩니다.
3) 소괄호 안에 사용할 매개 변수를 자료형과 함께 정의해줍니다.
4) 밑에 중괄호를 만들어 그 안에 함수의 기능을 정의합니다. (명령어 소스코드 작성)
5) 함수를 호출한 영역으로 값을 반환하거나 특히 main함수에서 프로그램 종료시 return 명령어를 작성해줍니다.
위의 예시를 보시면 먼저 표준 입출력 헤더파일을 전처리기에서 포함시킵니다. 이후 main 함수를 선언한 뒤 내부에 기능으로 printf 함수를 사용하여 Hello world 를 출력하도록 했습니다. 이후에 main함수를 종료시키기 위해 return 0;를 넣어 main함수가 종료되도록 했습니다. printf함수를 제외한 나머지 부분은 기본적으로 외워서 앞으로 코드를 작성하실 때 사용해야 합니다. 또 한가지 기억하셔야 할것은 몇가지를 제외하고는 기본적으로 문장이 끝나면 세미콜론(;)을 넣어주셔야 합니다. 이 후에 언어를 심화적으로 배우면서 각 문장의 의미와 복잡한 기능들을 만들 수 있을겁니다.
'IoT Embeded 강의' 카테고리의 다른 글
표준 입출력 함수 (콘솔) (0) | 2022.02.09 |
---|---|
서식문자 (0) | 2022.02.09 |
변수, 자료형, 식별자, 전역/지역 변수 (0) | 2022.02.09 |
Over flow (오버플로우)와 Under flow(언더플로우) (0) | 2022.02.08 |
반복문의 기본 문법 (0) | 2022.02.08 |