프로세스 프로세스 정의 메모리에서 실행중인 프로그램 특징 - xx번지라고 하는 주소 개념을 가짐 - 메모리 주소 공간은 스택 세그먼트 / 힙세그먼트 / 데이터 / 코드 세그먼트로 구분 - 제한된 공간에 적재하기 위해 운영체제가 관리 메모리 주소공간 - 메모리에 할당된 모든것은 시작주소가 있음 - 메모리 공간 1) 스택 세그먼트 : 지역변수 저장(임시데이터 저장공간) 2) 힙 세그먼트 : 동적메모리 할당 요청시 사용되는 공간 3) 데이터 세그먼트 : 전역변수, 정적변수 저장 4) 코드 세그먼트 : 프로그램의 실행코드와 함수 저장 포인터 포인터 정의 실행중인 프로세스의 임의의 주소 특징 메모리 공간의 주소를 확인하고 제어할 수 있는 자료형으로 메모리를 직접 조작할 수 있음 포인터 자료형 - 1) 포인터 선언..
조건 컴파일 전처리기의 이해 전처리란 원시 소스파일을 컴파일하기 전에 행해야 할 작업 특징 - 프로그램이 컴파일되기 전에 선행 - #으로 시작 - ;로 끝나면 안됨 매크로 상수 - #define 문을 이용하여 정의하는 상수 - 프로그램 전체에서 텍스트 대치를 선행처리기에게 알림 - 일련의 문자들이 다른 문자로 대치되는 매크로 대치 과정 조건컴파일 - 프로그램 코드의 일부가 선택적으로 컴파일될 수 있게함 - 지시자 : #if #elif, ,#else, #endif, #ifdef, #ifndef - 헤더파일의 중복 문제 #ifndef _POINT_H_ #define _POINT_H_ struct Point { int x, y; } pos; #endif ※ 시스템 헤더파일은 한번만 정의되도록 설계 vi /us..
C 컴파일러 #include int main() { printf("Hello World. \n"); return 0; } 컴파일러 종류 cc 유닉스에서 사용하는 표준 C 컴파일러 gcc GNU C 컴파일러로 주로 리눅스 시스템에서 사용함 컴파일 과정 1) 전처리 과정 #define, #include, #if와 같은 지시자 처리 2) 컴파일 전처리 작업을 수행한 소스 코드를 어셈블리 코드로 변환 후 오브젝트 파일로 변환 원시파일의 문맥과 문법을 확인하여 오류가 없으면 소스코드를 기계어 코드로 번역 3) 링크 오브젝트 파일과 라이브러리 함수를 연결하여 실행가능한 실행파일을 생성 CC컴파일 옵션 -o : 실행파일 이름 지정 /data/it/it03]cc hello.c -o hello /data/it/it03]..
문제 최대 공약수 구하기 두 정수 a, b의 최대공약수를 구하는 함수 get_gcd()를 구현해보세요. int get_gcd(int a, int b) { // 두 정수 a, b의 최대공약수를 구하는 함수를 구현할 것! } int main() { int gcd = get_gcd(26, 48); cout
리팩토링 리팩토링은 내부의 코드를 개선하는 하나의 방법론이자 솔루션을 뜻합니다. 리팩토링을 한마디로 말하자면, 나쁜 냄새가 나는 코드를 최적화하는 것입니다. 여기서 주의할 점은 런타임 시의 최적화가 아니라 프로그래밍을 할 때 버그 없는 프로그램을 만드는 것입니다. 외부 인터페이스는 그대로 두고 내부의 코드만을 개선하여 재사용과 가독성을 높이는 데 목적이 있습니다. [ 리팩토링 시리즈 ] [C++] 누구나 쉽게, 리팩토링(클린코드)-① 순수가상함수/추상클래스 [C++] 누구나 쉽게, 리팩토링(클린코드)-② 인터페이스 [C++] 누구나 쉽게, 리팩토링(클린코드)-③ 캐스팅 [C++] 누구나 쉽게, 리팩토링(클린코드)-④ 상속 (개념과 특징) 이번시간에는 리팩토링을 진행하면서 Null 객체를 도입에 대해 살펴..
★Object Oriented Programming★ ㅁ 객체지향 언어 추상화, 캡슐화, 상속, 다형성을 사용하여 유연성과 모듈성, 명료함 재사용성을 제공하는 부가된 특징을 가지고 있는 강력한 절차형 언어 - 모든 객체의 속성과 행동을 결합시킴으로써 실제 세계를 반영하는 방법으로 프로그램 구성 - 객체의 관점에서 생각하고, 프로그램은 상호작용하는 객체들의 모임으로 볼 수 있음 ㅁ 객체 명확히 확인이 가능한 실제 세계에서의 존재물을 대표하는 것. 책상, 원, 대여 등 - 객체는 자신만의 특성과 상태, 행동을 갖는다. * 상태(정적) : 현재 값을 가지고 있는 데이터 필드(= 속성)에 의해 표현됨 → 변수 * 행동(동적) : 일련의 함수에 의해 정의된다. 객체에 대한 함수를 호출하는 것은 객체에게 어떤 일을..
리팩토링 리팩토링은 내부의 코드를 개선하는 하나의 방법론이자 솔루션을 뜻합니다. 리팩토링을 한마디로 말하자면, 나쁜 냄새가 나는 코드를 최적화하는 것입니다. 여기서 주의할 점은 런타임 시의 최적화가 아니라 프로그래밍을 할 때 버그 없는 프로그램을 만드는 것입니다. 외부 인터페이스는 그대로 두고 내부의 코드만을 개선하여 재사용과 가독성을 높이는 데 목적이 있습니다. [ 리팩토링 시리즈 ] [C++] 누구나 쉽게, 리팩토링(클린코드)-① 순수가상함수/추상클래스 [C++] 누구나 쉽게, 리팩토링(클린코드)-② 인터페이스 [C++] 누구나 쉽게, 리팩토링(클린코드)-③ 캐스팅 이번시간에는 리팩토링을 진행하면서 상속개념에 대해 살펴보겠습니다. 4. 상속 스타크래프트의 마린과 고스트를 예로 설명하겠습니다. clas..
리팩토링 리팩토링은 내부의 코드를 개선하는 하나의 방법론이자 솔루션을 뜻합니다. 리팩토링을 한마디로 말하자면, 나쁜 냄새가 나는 코드를 최적화하는 것입니다. 여기서 주의할 점은 런타임 시의 최적화가 아니라 프로그래밍을 할 때 버그 없는 프로그램을 만드는 것입니다. 외부 인터페이스는 그대로 두고 내부의 코드만을 개선하여 재사용과 가독성을 높이는 데 목적이 있습니다. [ 리팩토링 시리즈 ] [C++] 누구나 쉽게, 리팩토링(클린코드)-① 순수가상함수/추상클래스 [C++] 누구나 쉽게, 리팩토링(클린코드)-② 인터페이스 [C++] 누구나 쉽게, 리팩토링(클린코드)-③ 캐스팅(이번글) 이번시간에는 리팩토링을 진행하면서 캐스팅 개념에 대해 살펴보겠습니다. 3. 캐스팅 캐스팅이란 형변환을 뜻합니다. 잘못된 형변환은..
리팩토링 리팩토링은 내부의 코드를 개선하는 하나의 방법론이자 솔루션을 뜻합니다. 리팩토링을 한마디로 말하자면, 나쁜 냄새가 나는 코드를 최적화하는 것입니다. 여기서 주의할 점은 런타임 시의 최적화가 아니라 프로그래밍을 할 때 버그 없는 프로그램을 만드는 것입니다. 외부 인터페이스는 그대로 두고 내부의 코드만을 개선하여 재사용과 가독성을 높이는 데 목적이 있습니다. 리팩토링 시리즈 [C++] 누구나 쉽게, 리팩토링(클린코드)-① 순수가상함수/추상클래스 [C++] 누구나 쉽게, 리팩토링(클린코드)-② 인터페이스(이번글) [C++] 누구나 쉽게, 리팩토링(클린코드)-③ 캐스팅(static·reinterpret·const·dynamic_cast)/타입체크 기능 이번시간에는 리팩토링을 진행하면서 인터페이스까지 함..