본문 바로가기

Windows Developer

[VB.NET] 열거형과 구조체 1. 열거형 열거형은 연관있는 상수들의 집합을 의미한다. 클래스 또는 모듈의 선언 영역에서 Enum문을 사용하여 열거형을 만든다. 위에서는 요일과 관련된 정수 상수 집합에 대한 Days 열거형을 선언하고 있다. 이때 각각의 상수들은 차례대로 정수 값을 가지게 되는데 맨 앞의 상수 Sunday가 0으로 설정되고 나머지는 차례대로 1씩 증가된 값을 갖는다. 기본적으로 열거형은 Integer형식을 가지며 원한다면 명시적으로 Integer, Short, Long 또는 Byte와 같은 숫자 형식으로 바꾸어도 상관없다. 때에 따라서는 임의의 값을 각 상수에 지정할 수도 있다. 임의의 값이 지정된 상수에는 그 값을 가지며, 값이 지정되지 않은 상수들은 지정된 상수로부터 1씩 증가된 값이 지정된다. 2. 구조체 구조체.. 더보기
[자료구조] 배열과 미로 탐색 4.1 배열의 정의 배열의 정의 1차원 배열 사용법 C++ 배열 정의 연속된 메모리 공간을 차지하는 같은 타입의 데이타 집합 정적인 데이타 타입으로 그 크기가 미리 정해져 있음 ( 정적이라는 것은 바뀌지 않는다는 의미 ) 배열의 인덱스 사용은 사용자의 책임 . 인덱스는 0 ~ 크기 -1 까지 . 배열 자체에 크기 정보는 없다 ( a[ 10 ]을 사용하여도 컴파일 에러는 발생하지 않으나 실행시에 Memory error가 난다. ) 데이타형 배열명[ 배열의 크기 ]; int array[ 10 ]; // index는 array[ 0 ] ~ array[ 9 ] int array2[ 5 ] = { 1, 2, 3, 4, 5 }; // 정의와 동시에 초기화 | | | | 1 | 2 | 3 | 4 | 5 | | | |.. 더보기
[C] main(int argc, char *argv[])에서 포인터를 쓰는 이유? main(int argc, char *argv[])는 프로그램하면서 많이 쓰는 부분입니다. argc는 파라미터 입력의 개수를 나타냅니다. 예를 들어 프로그램이 test_run이라고 가정하면 test_run하면 argc는 1이되고 test_run abc하면 argc는 2가 됩니다. 즉 파라미터 개수 +1이 됩니다. 이유는 파라미터를 입력하지 않더라도 자동적으로 하나의 파라미터가 들어가게 되어 있습니다. char *argv[]는 1차원 포인터 배열 입니다. 포인터는 일반적으로 할당된 메모리 영역에 대해서 주소를 확보하기 위해서 사용욉니다. 예를 들어보겠습니다. char a[] = "123"; char *p = a; printf("%s\n", a); printf("%s\n", p); 위에서 보면 printf의.. 더보기
[C++]STL에 대해서(보충) [출처]http://blog.naver.com/hkn10004/20103075766 STL은 C++ 응용 프로그램의 고효율성을 위해 설계 되었다. STL의 구성요소들과 용어들에 대해 알아보자. 컨테이너 : 벡터, 리스트, 큐, 맵 같은 전통적인 데이터 추상과 조직화 구조이다. 반복자 : iterator는 컨테이너 안의 요소들에 대한 포이터라고 생각하면 된다. 알고리즘 : 반복자에 대한 작동하는 독립형 함수들의 형태. 특수화된 멤버 함수들로 컨테이너들에 대한 가장 기본적인 작업 들을 수행한다. 컨테이너를 다룰때에는 범위를 얻는 데 쓰이는 메서드들을 알아야 한다. begin()과 end()가 있는데 컨테이너의 시작과 끝을 알 수 있다. 컨테이너 [][][][].....[]|| begin().......end.. 더보기
[C++] 초기화 리스트(Initialize List) [출처] café.naver.com/cppmaster 1. 초기화 리스트란? 클래스의 각 멤버를 생성자에서 초기화 할 때 생성자 뒤에 콜론연산자(:)를 사용해서 객체의 멤버를 초기화 할 수 있다. 이를 초기화 리스트, 또는 콜론 초기화라고 한다. - 초기화 리스트를 사용하지 않은 경우 class Point { int x; int y; public: Point(int a, int b) { x = a; y = b; } }; - 초기화 리스트를 사용한 경우 class Point { int x; int y; public: Point(int a, int b) : x(a), y(b) { } }; 그럼 , 이와 같은 초기화 리스트를 사용하는 이유는 무엇일까? 초기화 리스트를 사용하는 이유는 크게 효율성과 필요성으로 .. 더보기
[C++] 형변환 연산자 [출처] http://blog.daum.net/coolprogramming/62 C++언어는 C언어를 포함하므로 C언어의 형변환을 사용할 수 있지만 C++언어 자체의 형변환 연산자를 제공합니다. (EC++에서 C스타일의 형변환보다는 C++ 스타일의 형변환을 사용하라고 권장합니다. C++ 스타일의 형변환을 사용하면 잘못된 형변환의 위험에서 좀 더 안전하며 설계자의 의도를 좀 더 확실히 할 수 있습니다.) ( ) C언어의 형변환 : 만능 형변환 = 무식한 형변환 = 불가능은 없다. - 컴파일 타임 형변환 - static_cast : 상식적인?! 형변환입니다. 여기서 상식적인 형변환이라 말한 이유는 상식적으로 생각했을 때 가능할 것 같은 형변환이기 때문입니다.(암시적 변환이 가능한 형변환을 명시적으로 변환한다.. 더보기
[C++] 가상함수 [출처] NetGong 2009.09.04 17:01 http://blog.daum.net/coolprogramming/69 먼저 간단히 부모와 자식간의 함수 호출을 설명하도록 하겠습니다. #include using namespace std; class Person { char name[20]; int age; public: Person(const char* n, int a) { strcpy(name, n); age = a; } void Eat(){ cout 더보기
[C] 재귀함수 재귀 함수란 함수를 재호출 하는 것을 말합니다. 재귀에는 직접 재귀 함수와 간접 재귀 함수가 있습니다. - 직접 재귀함수 예제 : 자신의 함수를 직접 호출 void a() { a(); } - 간접 재귀함수 예제 : 다른 함수에서 서로 호출 void b() { a(); } void a() { b(); } 간접 재귀함수는 거의 사용되지 않으므로 직접 재귀함수를 공부해 보도록 하겠습니다 재귀함수는 루프와 약간 비슷한 면이 있습니다. 명령어를 반복 처리한다는 것이죠. 다른 점은 명령어들을 반복 처리만 하는 것이 아니라 함수 호출 스택이라는 것을 이용합니다. 그래서 명령어들을 하나의 단위로 다루면서도 스택 자료 구조의 이점까지도 쉽게 얻을 수 있다는 것입니다. 루프처럼 재귀함수는 종료 조건을 잘 만들어야 합니다... 더보기
[C] 동적 메모리 동적 메모리는 프로그램 실행시간에 메모리를 할당 받아 사용합니다. 말 그래도 '동적메모리'입니다. 프로그램 실행시에 사용자가 직접 필요한 메모리를 생성하고 프로그램 실행시 사용자가 직접 삭제할 수 있습니다. 보통 프로그램 중 가장 많은 메모리 공간을 사용합니다. 동적 메모리는 Heap 영역에 생성되며 저장소 키워드나 변수가 따로 존재 않고 malloc()함수를 사용하여 메모리 할당 후 주소를 이용한 메모리 접근 방식을 사용합니다. 동적 메모리 할당 malloc() 함수 사용 - 몇 가지 함수가 더 있지만 응용함수 일뿐 모두 malloc()함수의 확장형태입니다. 동적 메모리 삭제 free() 함수 사용 가장 간단한 예제 #include #include void main( ) { int *pn; pn = m.. 더보기
[C++]템플릿(template) 템플릿은 두 가지가 있습니다. 함수 템플릿 : 함수를 만들어 내는 메타 함수 클래스 템플릿 : 클래스를 만들어 내는 메타 클래스 1, 함수 템플릿 함수 템플릿은 함수를 만들기 위한 메타 함수( 함수의 틀)입니다. 함수는 어떤 기능을 수행하는 연산들의 집합입니다. 만약 출력 기능을 하는 함수가 있다면 이 함수의 기능은 출력입니다. 이때 지금까지 공부한 함수는 출력할 데이터(정수, 실수, 문자, 문자열 등)가 무엇인지에 따라 여러개의 함수를 작성해야만 했습니다. 함수 템플릿을 사용하면 메타 함수만 만들어 놓고 출력할 데이터의 타입을 컴파일 시간에 결정하여 여러 함수를 자동으로 생성할 수 있습니다. 예를 들어 설명하겠습니다. 정수, 실수, 문자열을 출력하는 예제입니다. #include using namespa.. 더보기