레필리아
'컴퓨터공학 기초/C.C++' 카테고리의 글 목록 (3 Page)

컴퓨터공학 기초/C.C++

컴퓨터공학 기초/C.C++

자주 사용하는 C++ STL algorithm 함수 정리

■ 자주사용하는 C++ STL algorithm 함수 정리 • 아래와 같은 배열과 함수가 먼저 선언되어 있다고 가정한다 int arr[10] = { 3, 7, 4, 3, 5, 1, 9, 5, 6, 4 }; void PRINT_ARR( int arr[], int size ) { for( int i = 0; i

컴퓨터공학 기초/C.C++

[DLL] DLL 만드는 방법 2

1. 파일 -> 새로만들기 -> 프로젝트 -> Visual C++ -> Win32 -> Win32 콘솔 프로젝트 선택 - 솔루션 이름과 프로젝트 이름 설정 - 여기서는 솔루션 이름은 DLLEX라 하고, 프로젝트 이름은 DLLEX_Client라 한다. 2. Win32 응용 프로그램 마법삽가 뜨는데, 탭란에 "응용 프로그램 설정" 부분을 누른다. 3. Radio 박스로 된 DLL을 선택하고, 체크박스로 된 내보내기 기호란을 체크한 후 "마침" 버튼을 누른다. 4. 그러면, 소스파일에는 stdafx.cpp, DLLEX_Client파일이 생성이 되고, 헤더 파일에는 stdafx.h, DLLEX_Client.h 파일이 생성이 된다. 5. 아래는 프로젝트 생성 후 구성된 DLLEX_Client.cpp 파일을 나타내..

컴퓨터공학 기초/C.C++

[DLL] DLL 만드는 방법 1

DLL의 간략한 소개를 하겠다. DLL의 장점으로는 아래와 같다. 1. 잘 만들어진 소스를 보관하고자 할 때 2. 컴파일 시간 낭비를 줄일 수 있다. 3. 보안 문제를 해결할 수 있다. 컴파일하면 .lib라는 확장자로 바꾸어 컴파일한다. 이런 라이브러리를 정적 라이브러리라고 한다. DLL들어가기 전에 정적 라이브러리를 할 줄 알아야 한다. 또한 다른 회사에 자기 원본 소스를 보내주지 않고 정적 라이브러리를 만들어서 보내주면 되는것이다. 즉, .dll 파일과 .lib, .h 파일을 보내주면 된다. 헤더파일 만드는 법.. - library자체는 c로 만들어서 컴파일 해둔다. - 헤더는 C/C++모두에서 사용할 수 있게 하는 것이 좋다. - 모든 c++컴파일러는 __cplusplus라는 매트로가 정의 되어 있..

컴퓨터공학 기초/C.C++

cout 출력 포맷 설정하기

cout은 ostream의 메서드이며, ostream 클래스는 ios 클래스로부터 상속되고, ios 클래스는 ios_base 클래스로부터 상속된다. ios_base 클래스는 출력 상태를 서술하는 정보를 가지고 있다. 1. 진법 변경 Manipulator를 사용하여 화면에 정수를 출력할 때 사용되는 진법을 제어하며, ios_base의 멤버 함수를 사용하여 필드 폭과 소수점 아래 자릿수를 제어할 수 있다. 즉, hex(cout)과 같은 함수 호출은 cout 객체의 수치 출력을 16진수로 설정하며, 다른 진법으로 다시 설정될 때 까지 모든 정수들을 16진법으로 출력한다. 또한 cout

컴퓨터공학 기초/C.C++

쓰레드(pthread_create, pthread_join)

쓰레드(pthread_create, pthread_join) 헤더 #include 원형 int pthread_create(pthread_t * thread, const pthread_attr_t *attr, void* (*start_routine)(void*), void *arg); 인자 첫번째 : 생성된 쓰레드의 ID를 저장할 변수의 포인터가 온다. 두번째 : 쓰레드의 특성을 설정할 때 사용되는데, 주로 NULL이 온다. 세번째 : 쓰레드가 생성되고 나서 실행될 함수가온다.(함수명도 주소값을 가짐으로 포인터로 볼수 있다.) 네번째 : 세번째 인자에서 호출되는 함수에 전달하고자 하는 인자 값 * 쓰레드는 main함수가 종료되면 자동으로 종료된다. 따라서 main에서 쓰레드가 종료될 때까지 main의 종료..

컴퓨터공학 기초/C.C++

함수 포인터와 void 포인터

● 함수 포인터의 이해 - 함수는 cpu에 의해 실행이 된다. > 결국은 메인 메모리 영역에 함수가 있어야 한다. - 함수이름도 실행시, 의미를 지닌다. > 메모리에 존재시, 함수이름은 메모리상의 위치를 가리키는 포인터다. > 결론 : 함수이름은 포인터다 - main함수의 main도 의미를 지닌다. ex) int Fuction(int a, int b) {...} int main(void) {Funtion(10, 20);...} // Funtion란 이름의 포인터가 가리키는 메모리 공간에 존재하는 메함수를 호출 하라 // 10, 20 란 값을 메모리상에 올린다. ● 함수 타입 - 함수 포인터 : 주소 + 자료형(타입) - 함수포인터 타입을 결정짓는 요소 : 리턴타입 + 매개 변수 타입 > int fct(i..

컴퓨터공학 기초/C.C++

assert

assert 매크로에 대해서 알아보도록 하겠습니다. assert 매크로의 인자로는 항상 TRUE가 되는 조건식을 넣어줍니다. 만약, FALSE인 경우는 문제가 발생했음을 사용자에게 알려주게 됩니다. 즉, assert (1) 인 경우는 에러 없이 무사히 넘어가며 assert(0) 인 경우는 사용자에게 문제 발생을 알려줍니다. assert를 쓰면 어떤 점에서 장점이 있을까요? 바로 Release 모드시에는 assert 매크로가 컴파일되지 않는다는 장점이 있습니다. Debug 모드에서만 수행이 되죠. 즉, 프로그램을 끝마친 후 나중에 일일이 조건 검사 코드를 제거하지 않아도 되는 편리함이 있습니다. assert를 사용할 때 주의할 점이 있습니다. Release 모드에서는 assert가 아예 컴파일 되지 않기 ..

컴퓨터공학 기초/C.C++

문자열 검색 함수 - strchr(), strrchr(), strstr(), strspn(), strcspn(), strpbrk()

strchr함수 기능 : 문자열에서 임의의 문자가 처음으로 발견된 위치를 검색. 기본형 : char *strchr(const char *s, int c); // s : 문자열, c : 문자 반환값 : 찾은 문자에 대한 포인터를 반환. 발견하지 못하면 NULL을 반환. 헤더파일 : strrchr함수 기능 : 문자열에서 임의의 문자가 마지막으로 발견된 위치를 검색. 기본형 : char *strrchr(const char *s, int c);// s : 문자열, c : 문자 반환값 : 찾은 문자에 대한 포인터를 반환. 발견하지 못하면 NULL을 반환. 헤더파일 : strstr함수 기능 : 문자열에서 임의의 문자열을 검색. 기본형 : char *strstr(const char *haystack, const ch..

컴퓨터공학 기초/C.C++

copy()와 특별한 이터레이터

★ copy() → 하나의 컨테이너에서 특정 범위의 데이터를 다른 컨테이너로 복사하는 알고리즘 인수 1, 2 : [인수1, 인수2) 의 범위로 이터레이터를 인수로 넣음. (포인터도 가능) 인수 3 : 해당 이터레이터 지점부터 해서 데이터를 덮어씌운다. → 이 알고리즘의 주의사항은 인수 3에 넣어지는 지점에 삽입하는 것이 아니라 기존 데이터 위에 덮어 씌운다는 것이다. 또한 인수 3에 복사를 할때 자동으로 공간 할당을 해주지 않기 때문에 인수 1~2 범위 데이터를 넣을 수 있는 충분한 공간이 필요하다. 그렇지 않으면 할당 받지 않는 지점에 데이터를 덮어 씌우므로 런타임 에러를 유발하게 할 것이다. → copy() 는 다음과 같이 쓸 수 있다. vector test( 10 ); int iArray[10] =..

컴퓨터공학 기초/C.C++

이터레이터(iterator)

★ 일반화 프로그래밍 → STL은 일반화 프로그래밍의 한가지 예이다. → 객체지향 프로그래밍이 프로그램의 데이터적인 측면을 중시하는 데에 비해 일반화 프로그래밍은 데이터 타입에 대해 무관하며 알고리즘을 중시한다. 이것은 즉 일반화 프로그래밍이라는 것이 어떠한 데이터 타입에서도 무난하게 돌아가야 한다는 것을 의미한다. ★ 이터레이터에 대해 → STL을 이해하기 위해서는 이터레이터의 이해가 반드시 필요하다. 배열, 리스트, 큐 등 다양한 종류의 컨테이너에 대해서 같은 연산으로 동일한 동작을 할 수 있도록 하는 것이 이터레이터이다. 예를 들어 ++연산을 예로 들어본다면 둘다 다음 요소를 가리키게 한다는 기능적인 측면에서는 같지만, 배열에서는 다음 주소 공간을 가리키게 하는데에 비해 리스트는 서로의 원소들이 (..