c++

· Language/C++
어느정도 개발을 진행하다보면 반드시 사용하게 되는 것이 DLL이다. DLL을 사용했을 떄 장점, 단점 등은 구글링을 해보면 수십개가 나온다. 필자는 DLL 사용을 아주 선호하는 편인데, 그 이유는 내 코드가 간결해 진다는 것이다. (모듈화의 장점 중 하나) 그냥 깔끔한 코드를 좋아한다. 본론으로 들어가, DLL을 로드하는 방법은 크게 Implicit Link, Explicit Link가 있다. 한국말로 묵시적(암시적) 링크, 명시적 링크라고 하는데.. 뭐 개인적으로 명시적 링크를 선호한다. 예제를 보면, 먼저 DLL을 하나 만들었다. (SampleDLL.dll) // SampleDLL.h #pragma once extern "C" __declspec(dllexport) void PrintName(void..
· Language/C++
윈도우 환경에서 프로그램을 개발하다 보면 자연스럽게 DLL을 사용하게 되고, 종종 DLL에서 특정 데이터를 전달하여 해당 값을 사용하는 경우가 생깁니다. 아래 예제는 명시적 방법으로 DLL을 로드하고, DLL에서 Notify를 통해 데이터를 전달하여 메인 프로그램에서 해당 값을 출력하는 예제입니다. 개요 프로그램 구조와 전반적인 동작 루틴은 아래와 같습니다. - Common - NotifyTestCommon : EXE와 DLL에서 공통으로 사용되는 구조체 또는 전처리문 정의 (.h) - Execute - NotifyTestExeDlg : EXE 메인 UI (.h, .cpp) - DLL 명시적 링킹을 위한 선언 // NotifyTestCommon.h #ifndef __cplusplus extern "C" ..
· Language/C++
MFC란? Microsoft Foundation Class 마이크로 소프트에서 만든 클래스 MFC의 배경 윈도우 프로그래밍은 기본적으로 수많은 API가 사용된다. 이는 다양한 기능을 제공하지만 실제로 코딩을 하는 사람들에게 너무나도 복잡하고 많은 라이브러리로 개발자의 혼란을 불러 일으켰다. 따라서 마이크로소프트에서는 1990년 윈도우 API 함수를 캐슐화하여 라이브러리를 만들었고, 이후 이것은 MFC로 발전되었다. 따라서 MFC는 마이크로소프트에서 API 함수를 각 기능별로 클래스화한 형태로 만든 것이라 할 수 있으며 현재 MFC 라이브러리는 Visual C++에 기본적으로 포함되어 제공된다. MFC 계층도 MFC의 계층 구조를 간단하게 살펴보면 크게 CObject와 CObject에서 파생되지 않은 클래..
· Language/C++
참조자 (Reference) – 변수에 또 하나의 이름 지정 – 변수 앞에 & 연산자를 사용하여 선언 int A = 10; int &ReferenceA = A; 사용 목적 참조자를 사용한 Call by reference 호출 가능 (ex. swap 함수) #include using namespace std; void Swap(int& x, int& y) { // 참조자 사용 int temp; temp = x; x = y; y = temp; } void main() { int a = 100, b = 1; Swap(a, b); // int &x = a, int &y = b와 동일 cout
· Language/C++
포인터와 주소 포인터 메모리의 주소 값을 담고 있는 변수 또는 상수 데이터 위치를 가리키는 변수 주소 메모리 저장된 위치(번지) & 연산자를 사용하면 특정 변수의 주소를 반환 단항 간접 참조 연산자 #include void main() { int a; int *pa; a=10; pa=&a; printf("a: %d\n", a); // 10 *a=100; printf("a: %d\n", a); // 100 } 더블 포인터 #include void main() { int A = 50, B = 100; int* pA = &A; int** dpA = &pA; /* Test 1 */ printf("pA : %d\n", *pA); // 50 printf("dpA : %d\n\n", **dpA); // 50 /* T..
· Language/C++
지역 변수 (Local Variable) – 선언한 지역을 벗어나면 기억 공간에서 자동 소멸 – 지역은 { } 로 구분 #include int main() { int a = 30; { int a = 60; printf(“1. a: %d\n”, a); } printf(“2. a: %d\n”, a); return 0; } 1. a: 60 2. a: 30 정적 변수 (Static Variable) – 정적 변수 사용하면 영역을 벗어나도 메모리 공간에서 소멸하지 않음 – 값 또한 그대로 유지 – 일종의 한번 선언하고 나면 계속 유지되는 변수 – 초기화 하지 않으면 자동으로 0으로 초기화 #include void count() { static int c; c = c + 1; printf(“c: %d\n”, c);..
· Language/C++
Memory allocation malloc은 코딩에서 동적 메모리 할당이라는 부분을 배울 때 가장 처음 등장하는 단어입니다. 이는 memory allocation의 준말로 정해진 static 공간이 아닌 dynamic한 공간이 프로그램에서 필요할 때 사용합니다. #include int main() { int length; char str1[100]; char *str2; printf("Input size: "); scanf("%d", &length); str2 = (char*)malloc(sizeof(char) * length + 1); // ... // 해제 } 사용자가 글자를 입력하는 상황이 발생할 때, 위와 같이 str1처럼 정적으로 받는 방식과 str2처럼 실제 필요한 크기만큼 동적으로 할당해서..
· Algorithm
문제 출판사의 편집자인 어피치는 네오에게 컬러링북에 들어갈 원화를 그려달라고 부탁하여 여러 장의 그림을 받았다. 여러 장의 그림을 난이도 순으로 컬러링북에 넣고 싶었던 어피치는 영역이 많으면 색칠하기가 까다로워 어려워진다는 사실을 발견하고 그림의 난이도를 영역의 수로 정의하였다. (영역이란 상하좌우로 연결된 같은 색상의 공간을 의미한다.) 그림에 몇 개의 영역이 있는지와 가장 큰 영역의 넓이는 얼마인지 계산하는 프로그램을 작성해보자. 입력 형식 입력은 그림의 크기를 나타내는 m과 n, 그리고 그림을 나타내는 m × n 크기의 2차원 배열 picture로 주어진다. 제한조건은 아래와 같다. 1 0 && curVal == g_vecPicture[x - 1][y]) { cnt += floodFill(x - 1..
· Algorithm
문제 하노이의 탑은 대표적인 퍼즐의 일종입니다. 세 개의 기둥이 있고 맨 왼쪽의 기둥에는 원판의 크기 순서대로 N개가 쌓여 있습니다. 이렇게 쌓여 있는 원판을 가장 오른쪽 기둥으로 모두 옮겨야 합니다. 단, 한 번에 원판을 하나씩 이동시킬 수 있고, 큰 원판을 작은 원판 위에 쌓을 수 없습니다. N개의 원판은 총 2N -1 번의 과정을 거쳐 이동할 수 있습니다. 하지만 어떠한 과정으로 원판을 옮겨야 2N -1 번만에 옮길 수 있는지는 아직 모릅니다. 원판이 N개 있을 때, Hanoi 함수에서 어떠한 과정으로 2N -1 번만에 옮길 수 있는지 과정을 리턴하세요. 리턴값의 표기 방법은 다음과 같습니다. 3개의 기둥은 순서대로 각각 1, 2, 3번으로 표기합니다. 원판을 기둥1에서 기둥3으로 이동했다면 [1,..
· Algorithm
문제 N명의 사람이 있을 때, N명의 사람을 서로 다른 방법으로 줄을 세우는 방법은 N!개가 존재합니다. 이 때 각각의 사람들에게 번호를 매겨서 줄을 서는 방법을 표시합니다. 예를들어 [1,2,3,4]는 1번 사람이 제일 앞에, 2번 사람이 2두번째에 서 있는 상태를 나타냅니다. 이러한 각각의 방법을 사전순으로 정렬했을때 K번째 방법으로 줄을 세우는 방법을 찾아 보려고 합니다. 예를 들어 3명의 사람이 있다면 총 6개의 방법은 다음과 같이 정렬할 수 있습니다. 1번째 방법은 [1,2,3] 2번째 방법은 [1,3,2] 3번째 방법은 [2,1,3] 4번째 방법은 [2,3,1] 5번째 방법은 [3,1,2] 6번째 방법은 [3,2,1] 이 때 K가 5이면 [3,1,2]가 그 방법입니다. 사람의 수 N과 순서 K..
lasiyan
'c++' 태그의 글 목록 (2 Page)