본문 바로가기

Programming/C++124

C언어 기반의 C++ 2 printf 와 scanf 대신해서 cout, cin을 사용할 수 있습니다. 서식지정을 안 해줘도 되고, 값을 입력 받을 때 포인터와 연관된 & 연산자를 붙일 필요도 없으니 말입니다. 실행중인 프로그램의 메모리 공간. 데이터는 전역변수가 저장되는 영역입니다. 스택은 지역변수 및 매개변수가 저장되는 영역입니다. 힙은 malloc 함수호출에 의해 프로그램이 실행되는 과정에서 동적으로 할당이 이뤄지는 영역입니다. malloc & free 는 malloc 함수호출에 의해 할당된 메모리 공간은 free 함수호출을 통해서 소멸하지 않으면 해체되지 않습니다. 키워드 const의 의미 const int num = 10; 은 변수 num을 상수화한다는 뜻입니다. const int * ptr1 = &val1; 포인터 pt.. 2017. 7. 28.
C언어 기반의 C++ C++은 C언어를 포함합니다. 떄문에 C언어로 작성된 대부분의 프로그램은 C++ 컴파일러로도 컴파일이 가능합니다. 그러나 C++은 C언어가 지니지 않는 문법적 특성도 지니고 있습니다. printf 와 scanf를 대신하는 입출력 방식#include int main(void){int num = 20;std::cout 2017. 7. 28.
포인터의 포인터 포인터의 포인터 혹은 더블 포인터라 불리는 포인터는 다음과 같이 선언하게 됩니다. int **dp 더블 포인터가 가리키는 것은 싱글 포인터포인터는 무조건 메모리 공간의 주소 값을 저장하는 변수입니다. 따라서 모든 포인터 변수는 4바이트 메모리 공간을 요구합니다. #include void pswap(int *p1, int *p2); int main(void){int A = 10, B = 20;int *pA, *pB; pA = &A, pB = &B; printf("pA -> value : %d\n", *pA);printf("pB -> value : %d\n", *pB); pswap(pA, pB); printf("pA -> value : %d\n", *pA);printf("pB -> value : %d\n",.. 2017. 7. 27.
함수 포인터와 void 포인터 앞으로 공부해야 할 보다 수준 있는 프로그래밍 분야(알고리즘, 네트워크 프로그래밍, 시스템 프로그래밍, win32 프로그래밍) 을 접하면서 모든 문법적 요소의 필요성을 본인 스스로 느끼게 될 것 입니다. 총 3개의 함수로 구성이 되어 있는 test.c 를 통해서 test.exe 라는 실행 파일을 생성하였다고 가정해 봅니다. 이 파일을 더블클릭 하게 되면 어떠한 과정을 거쳐서 프로그램이 실행 되나요? test.c 는 main, fct1 그리고 fct2 이렇게 3개의 함수로 구성되어 있다고 가정하겠습니다. 프로그램의 실행은 CPU가 담당합니다. CPU는 메인 메모리라는 곳에 올라와 있는 것을 가지고 일을 하게 됩니다. 메인 메모리는 보통 램(RAM)을 이야기 하는 것입니다. 다시 말하면 하드 디스크상에 존재.. 2017. 7. 27.
프로세스 프로세스?프로세스와 프로그램의 차이는 명확합니다. 프로그램은 보조 기억 장치(하드디스크, SSD)에 존재하며 실행되기를 기다리는 명령어(코드)와 정적인 데이터의 묶음입니다. 이 프로그램의 명령어와 정적 데이터가 메모리에 적재되면 생명이 있는 프로세스가 됩니다. 컴퓨터의 관점에서 여러개의 프로세스가 동시에 실행되는 것은 놀라운 일입니다. 하나의 CPU 프로세서는 한 순간에 하나의 프로세스만 실행 할 수 있기 때문입니다. 프로세스가 동시에 여러개 실행될 수 있는 이유는 운영체제가 엄청나게 빠르게 CPU가 실행할 프로세스를 교체하고 있기 때문입니다. 이 교체가 수십번에서 수천번(초) 일어나기 때문에 사람은 동시에 여러개의 프로세스가 실행되고 있다고 생각하는 것입니다. 운영체제는 사용자에게 이렇게 동시에 여러개.. 2017. 7. 27.
모듈화 프로그래밍 C언어로 구현되어 있는 프로그램은 보통 여러 개의 파일로 구성이 됩니다. 프로그래머들이 하나의 파일 안에 많은 내용 담기를 원치 않기 떄문입니다. 이렇듯 구현하고자 하는 내용을 여러 개의 파일에 나눠 담기 위해서는 공부해야 할 내용이 있습니다. 프로그래밍의 모듈화지금까지 구현한 프로그램은 그 크기가 크던 작던 하나의 파일 내에 모든 프로그램 코드가 존재하였습니다. 물론 이렇게 구현하는 것도 문제될 것은 없지만, 프로그램의 크기가 커지면 관리하기가 어려워집니다. 소프트웨어서 말하는 모듈이란 프로그램의 일부분을 의미하는 것입니다. C언어를 이용하여 계산기에 관련된 함수를 구현했다면, 이러한 함수들의 집합도 하나의 모듈이 될 수 있습니다. 변수 i를 새롭게 선언하는 것이 아니다. 단지 main 함수에 참조하는.. 2017. 7. 27.
매크로와 전처리기 c언어의 모든 문법은 매크로에서 귀결됩니다. c 언어에서 매크로 차지하는 위치는 비교적 높습니다. 이번 포스팅에서 매크로가 무엇인지를 이해하고, 매크로의 장점과 단점, 더불어 좋은 프로그래밍 스타일까지도 함께 보도록 합니다. 전처리기에 의한 매크로 처리소스 코드는 컴파일이라는 과정과 링크라는 과정을 거쳐서 실행 파일이 생성됩니다. 여기서 컴파일이라는 과정을 좀 더 구체적으로 세분화한다면 전처리 단계와 컴파일 단계로 나눌 수 있습니다. 전처리라는 과정은 전처리기에 의해서 처리되고, 컴파일은 컴파일러에 의해서 처리되고, 링크는 링커에 의해서 처리됩니다. #으로 시작하는 문장의 처리과정을 가리켜 전처리라 합니다. 전처리 작업은 컴파일러에 의해 처리되는 컴파일보다 훨씬 단순한 구조로 이뤄집니다. #define .. 2017. 7. 27.
구조체를 포함하는 구조체 중첩된 구조체의 정의#include struct point {int x;int y;}; struct circle {struct point p;double radius;}; int main(){struct circle c1 = { 10, 10, 1.5 };struct circle c2 = { {30, 30}, 2.4 }; printf("[circle]\n");printf("x:%d, y:%d\n", c1.p.x, c1.p.y);printf("radius:%f \n", c1.radius); printf("[circle2]\n");printf("x:%d, y:%d\n", c2.p.x, c2.p.y);printf("radius:%f\n", c2.radius); return 0;} 구조체란 하나 이상의 변수를 그.. 2017. 7. 27.
구조체와 사용자 정의 자료형2 구조체를 보다 쉽게 용이하게 사용하는 방법에 대해 이야기하겠습니다. 더욱이 구조체 이외의 사용자 정의 자료형에 대해서도 이야기 하겠습니다. 구조체 변수의 전달과 리턴함수 호출 시 구조체 변수를 인자로 전달하거나 리턴하는 과정에서 일어나는 모든 일은 기본 자료형 변수와 완전히 동일합니다. 구조체 변수를 함수 호출 시 전달하는 방법은 일반 변수를 전달하는 방법과 마찬가지로 두 가지 입니다. 값에 의한 전달과 레퍼런스에 의한 전달입니다. #include struct simple {int data1;int data2;}; void show(struct simple ts);void swap(struct simple* ps); int main(){struct simple s = { 1,2 }; show(s);swa.. 2017. 7. 26.
구조체와 사용자 정의 자료형 구조체란 무엇인가요?구조체란 하나 이상의 변수를 그룹 지어서 새로운 자료형을 저의하는 것입니다. 그룹 지어진 변수들은 서로 다른 자료형의 변수라 할지라도 상관이 없으며, 포인터 변수나 배열도 그룹에 속할 수 있습니다. 예제를 통해서 살펴본 내용을 정리하도록 하겠습니다. 이 예제에서는 사용자로부터 두 점의 위치를 입력받아서, 두 점 사이의 거리를 계산하여 그 결과를 출력해 줍니다. #include #include struct point {int x;int y;}; int main(void){struct point p1, p2;double distance; fputs("Fisrt point x, y : ", stdout);scanf_s("%d %d", &p1.x, &p1.y); fputs("Second po.. 2017. 7. 26.