Programming Language/C(23)
-
열혈 C - Chapter 27. 파일의 분할과 헤더파일의 디자인
여태까지는 하나의 소스파일안에 모든 것을 다 넣었었다.그런데 사실 프로그래밍을 하다 보면 하나의 파일안에 모두 다 넣어놓지는 않는다.여러개의 파일들이 만들어지고 이게 하나의 프로그램을 만들게 된다. 그러면 왜 파일을 나눌까?파일을 나누는 이유는 관리의 용이성을 위해서이다. 파일을 나누는 이점을 살펴보자면 한사람이 하나의 프로그램을 만든다고 생각하지만 실제로는 다수의 사람이 하나의 프로그램을 개발하기 마련이다.그러면 보통 각자가 파일을 만들고 하나로 묶어서(적절한 위치에 배치시킨다) 컴파일해서 하나의 실행파일을 만들어내는 것이다.단순하게 협업을 위해서이다 라고 만 생각해도 파일을 분리해서 프로그램을 개발하는게 더 자연스럽지 않을까. 그리고 소스코드 하나에 1만개 이상의 라인을 만들었다고 한다면 어떤 코드가..
2024.11.17 -
열혈 C - Chapter 26. 매크로와 선행처리기
26-1 선행처리기와 매크로선행처리는 컴파일 이전의 처리를 의미한다일반적으로 컴파일의 과정안에 포함되어 있는 것으로 이야기하지만, 선행 처리의 과정과 컴파일의 과정은 구분이 된다.선행처리기의 일 간단히 맛보기컴파일러에 비해서 선행처리기의 역할은 매우 단순하다.쉽게 말해서 "단순한 치환"의 작업을 거친다.선행처리기에게 무엇인가를 명령하는 문장은 #으로 시작한다//선행 처리기 이전 소스파일#define PI 3.14int main(void){ .... num = PI * 3.5; ....}↓//선행 처리기 이후 소스파일int main(void){ .... num = 3.14 * 3.5; ....}이렇게 명령문은(#define)은 소멸되고 PI는 단순 치환된다.26-2 대표적인..
2024.11.15 -
열혈 C - Chapter 25. 메모리 관리와 메모리의 동적 할당
25-1 C언어의 메모리 구조메모리의 구성메모리의 구성은 코드영역/데이터 영역/힙 영역/스택 영역으로 나뉜다.이는 운영체제에 의해 할당된 메모리 공간이다. 1. 코드(Code)영역 코드 영역은 실행할 프로그램의 코드가 저장되는 영역이다. CPU가 여기에 저장된 명령어를 하나씩 가져다 처리한다. 2. 데이터(Data)영역 프로그램의 전역 변수와 정적(static)변수가 저장된다. 프로그램 시작 시 할당되고 종료 시 소멸된다. 3. 스택(stack)영역 함수 호출과 관련된 지역 변수와 매개변수가 저장된다. 함수 호출 시 할당되고 종료시 소멸된다. 후입선출(LIFO) 방식으로 동작한다. 메모리의 높은 주소에서 낮은 주소의 방향으로 할당된다.4. 힙(Heap)영역 사용자가 직접 관리하는 동적 메모리의 할당 영역..
2024.11.15 -
열혈 C - Chapter 24 파일 입출력
24-1 파일과 스트림(Stream), 그리고 기본적인 파일의 입출력파일이 중요한게 아니라 입출력이 중요함.입출력의 방법에 대한 전체적인 모델을 파일을 통해서 공부를 한다고 생각하면 된다. 파일에 저장되어 있는 데이터를 읽고 싶어요먼저 복습을 해보자면 우리는 이전까지 console을 통해서 입출력을 했었다.우리의 프로그램과 모니터, 키보드를 통해서 수없이 입출력을 했었다.여기서 프로그램과 모니터에서 발생하는 스트림을, 표준 출력스트림이라고 했었고 이 스트림의 방향은 프로그램 ===> 모니터 였었고 이를 stdout이라는 이름으로 지칭했었다.사실 stdout은 모니터를 의미하는게 아니라 스트림을 의미한다고 앞에서도 이야기 했었다.이 stdout의 출력방향을 모니터가 아니라 다른 방향으로 redirectio..
2024.11.03 -
열혈 C - Chapter 23 구조체와 사용자 정의 자료형2
23-1 구조체의 정의와 typedef 선언typedef는 기존 자료형에 새로운 이름을 부여하는 키워드이다. typedef는 이미 존재하는 자료형에 별칭(alias)를 붙여 사용할 수 있게 해준다. 이를 통해서 가독성을 높이고 유지보수를 용이하게 할 수 있다.typedef의 선언* 표준적인 typedef의 선언법typedef 기존자료형 별칭;// typedef 선언법typedef int INT;typedef double MYTYPE;//typedef 변수 선언법INT num; // == int num;MYTYPE * ptr; // == double * ptr; 구조체 정의와 typedef의 선언구조체를 typedef선언하는 방법은 두가지가 있는데 첫번째로 그냥 아래에 typedef를 사용..
2024.10.31 -
열혈 C - Chapter 22 구조체와 사용자 정의 자료형1
프로그램을 만들면서 구조체는 100% 사용된다.과장 하지 않고 C언어를 사용하면서 구조체를 이용하지 않은 프로그램은 존재할 수 없다.그렇기에 이 구조체는 매우 중요하다.그 만큼 어려운 문법은 아니지만 이 구조체를 정확히 이해하고 정확이 적용할 수 있는가가 중요하다.22-1 구조체란 무엇인가?구조체가 C언어를 사용해서 프로그램을 만들때 왜 100%사용되는지에 대해서 먼저 생각해보자.사실은 우리가 제대로 프로그램을 하나 만들어보고 나면 구조체가 왜 필요한지에 대해서 매우 쉽게 이해할 수 있는데 우리가 경험해본 프로그램이 예제뿐이기에 어느정도는 상상을 기반으로 한 설명의 이해가 필요하다. 우리가 프로그램을 구현한다고 생각해보자.우리의 프로그램에서 관리해야하는 데이터가 주민등록증에 존재하는 데이터들이라고 생각해..
2024.10.28