Programming Language(97)
-
열혈 C++ - Chapter 03. 클래스의 기본
03-1. C++에서의 구조체구조체의 등장 배경연관있는 데이터를 하나로 묶으면 프로그램의 구현과 관리가 용이하다.구조체는 연관 있는 데이를 하나로 묶는 문법적 장치이다. 구조체로 연관있는 데이터들을 묶으면 생성 및 소멸시점을 일치시키고, 이동 및 전달 시점 및 방법 또한 일치시키기 때문에 관리가 용이 해진다는 장점이 있다.C++ 에서의 구조체 변수 선언C에서는 struct라는 키워드를 통해 구조체 변수를 선언했는데 C++의 경우는 struct키워드가 필요 없다.//C언어에서의 구조체 선언 방법struct Car basicCar;struct Car simpleCar;↓//C++에서의 구조체 선언 방법Car basicCar;Car simpleCar;그렇기 때문에 변수를 선언할때 struct를 없에기 위해서 ..
2024.11.19 -
열혈 C++ - Chapter 02. C언어 기반의 C++ 2
02-1. Chapter 02의 시작에 앞서C언어의 복습을 유도하는 확인학습 문제#[문제 1] 키워드 const의 의미키워드 const는 어떤 의미를 갖는가? 다음 문장들을 대상으로 이를 설명해보자.const int num = 10; ===> num을 상수화 / num은 10에서 변경할 수 없음const int * ptr1 = &val1; ===> ptr이 가리키는 val1이 const int 타입임 / ptr1을 이용해서는 val1의 값을 변경할 수 없음, 그러나 ptr1은 다른 주소값으로 변경하는게 가능함int * const ptr2 = &val2; ===> ptr2를 상수화 / ptr2의 값은 변경할 수 없이 val2를 항상보고있어야함, ptr2를 통해서 val2의 값을 변경하는건 문제 없음co..
2024.11.19 -
열혈 C++ - Chapter 01. C언어 기반의 C++
01-1. printf와 scanf를 대신하는 입출력 방식C++ 버전의 Hello World 출력 프로그램//예제를 통해 확인할 사실//헤더 파일의 구성 #include //출력의 기본 구성std:cout 또한 C언어의 경우는 출력 대상에 따라 서식 지정을 다르게 해서 출력 했으나(%d, %g, %f) C++에서는 사용하지 않아도 된다. scanf를 대신하는 데이터의 입력//예제를 통해서 확인할 사실 몇가지 //입력의 기본 구성std::cin>>'변수'//변수의 선언위치//함수의 중간 부분에서도 변수의 선언이 가능하다 우선 C++의 경우는 변수의 선언 위치에 제한을 두지 않는다.(C의 경우는 상단에 선언했어야 했음, C99 버전 이후부터는 이게 문제가 없음, C89, C90은 불가능함) 이렇게 변수를..
2024.11.18 -
열혈 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