본문 바로가기

C++

(7)
[C++/C] 포인터 오늘 포스팅할 내용은 C/C++의 포인터 입니다. 포인터는 C/C++에서 배열이나 매개변수 부분에서 사용되고 효율적으로 인자를 넘기기위해서 주로 사용됩니다.컴퓨터공학에(C언어) 처음 입문하시는 분들이 초반에 많이 어려워하고 힘들어하는 부분이기도 합니다. 우선 포인터의 개념에 대해 설명하는 포스팅을 한 후 다음 포스팅에서 포인터 사용예를 포스팅하도록 하겠습니다. 포인터에는 메모리할당을 통한 동적포인터도 존재하지만 예전에 비해 효율성이 떨어지고(예전에는 메모리가 작았기 때문에 메모리 할당 해제를 통해 작은 메모리를 효율적으로 사용하는 경우도 있었다고 한다.) 오히려 잘못쓰면 메모리 낭비가 발생할 수 있기때문에일반적인 포인터인 정적포인터를 기준으로 설명하겠습니다.(일반적으로 그냥 포인터라 함은 정적포인터를 말..
[C++] StringTokenizer JAVA에서는 String을 Token별로 끊어주는 StringTokenizer클래스가 제공되지만 C++에서는 그러한 클래스가 제공되지 않는다. 그래서 StringTokenizer를 사용하려면 직접 구현하여 사용하여야 한다. 아래의 두 파일을 받아 프로젝트폴더에 넣고 #include "StringTokenizer.h"를 하여 자바에서 StringTokenizer를 사용하듯이 사용하면 됩니다. 사용가능 함수 및 생성자StringTokenizer(string str) StringTokenizer(string str,string delim) StringTokenizer(string str, string delim, bool returnDelims) hasMoreTokens() countTokens() next..
[C++] Thread(쓰레드, 스레드) 쓰레드(thread)는 라이브러리에 정의되어있다. 쓰레드(thread)란 프로세스내에서 실행되는 실행 단위이다. 주로 프로그램에는 하나의 스레드로 구성되는데 프로그램은 여러개의 스레드를 가질 수 있다. 이러한 방식을 멀티스레드 라고 한다. 멀티스레드를 실행하면 각 스레드들은 일정시간동안 번갈아가면서 실행된다. 예를들어 1을 1000번 출력하는 스레드 T1과 0을 1000번 출력하는 스레드 T2가 있다고할 때 1이 1000번 출력되고 0이 1000번 수행되는 것이 아니라 1과 0이 번갈아가면서 실행된다(정확히 101010...이 출력되지는 않고 실행할때 마다 조금식 다르게 출력된다.) C++에서 스레드는 아래와 같이 사용한다.thread(함수);#include #include using namesapce ..
[C++] 프렌드 함수 C++ 프렌드 함수 프렌드 함수란 클래스의 멤버 함수는 아니지만 클래스에 friend 함수라고 선언을 해줌으로써 클래스의 멤버 함수처럼 private 멤버에 접근할 수 있는 함수이다. 일반함수뿐만 아니라 연산자 오버로딩또한 프렌드 함수로 구현할 수 있다.프렌드 함수는 하나 이상의 클래스와 프렌드 함수가 될 수 있다. 프렌드 함수는 클래스 정의부분에 friend 키워드를 사용하여 정의하고 실제 구현부분에서는 키워드를 사용하지않고 일반 함수와 똑같이 구현한다. 그림과 같이 MyClass의 멤버 함수가 아닌 friendFunction을 friend함수로 선언해줌으로써 MyClass의 멤버변수인 member를 접근할 수 있게 되었다.friendFunction함수는 MyClass의 멤버 함수가 아니기때문에 .연산..
[C++] .연산자와 ::연산자 C++ . 연산자와 :: 연산자 C++에서 클래스에서 사용되는 두 연산자 .연산자와 ::연산자는 모두 멤버변수가 어느 클래스에 속하는지를 결정하는 연산자이다. 차이점은 .연산자는 객체에 사용되고 ::연산자는 클래스에 사용된다. MyClass myclass; 가 정의되었고 MyClass내에 myFunction이 정의되었다고 하면 .연산자는 myclass.myFunction()으로 객체가 함수를 호출하는데 사용되고 ::연산자는 void MyClass::myFunction()으로 클래스를 정의할때에 사용되거나 static으로 구현된 함수를 클래스에서 호출하는데 사용된다. 자바에서는 .연산자와 ::연산자가 .연산자 하나로 구현되어 차이가 없지만 C++에서는 둘이 구분되어 있다. 자바에서 MyClass.myFun..
[C++] 디폴트 인자 C++ 디폴트 인자 C++ Default Argument C++에서는 디폴트 인자를 지정할 수 있다. 디폴트 인자는 대응하는 인자를 넘겨주지 않으면 디폴트 값으로 대체되는 방식이다. 디폴트 인자는 아래의 사진과 같이 사용할 수 있다. 매개변수에 값을 지정해주면 인자를 넘겨주지 않았을 경우 디폴트 값으로 사용된다. 디폴트값은 가장 오른쪽을 우선으로 한다. 위에서 보면 1,2,3을 넘겨 주었을때는 4번 매개변수가 디폴트 값으로 지정되었고 1,2를 넘겨 주었을때는 3,4번 매개변수가 디폴트 값으로 지정되었다. 따라서 디폴트 인자는 중간의 값을 생략할 방법은 없다. 디폴트 인자는 처음 정의될때에만 사용할 수 있다. 이와 같은 방법은 되지만 ERROR 함수 선언에서와 정의에서 모두 표현한 경우 이같은 방법과 선언..
[C++] 랜덤함수 - 난수 생성기 C++ 랜덤 함수 - 난수 생성기 C++에는 라는 헤더파일에 rand라는 난수 생성 함수가 있다.rand()함수를 호출하면 0에서 RAND_MAX까지의 정수 1개를 리턴한다. 위 결과를 보면 rand함수를 5번 실행한 경우와 10번 실행한 경우에 1~5번째 값이 같다.그리고 실행할때마다 계속해서 위와 같은 결과가 나오게 된다. rand함수는 시드(seed)라는 값에의해 생성되므로 시드값을 설정을 해주지 않아 같은 시드값으로 실행이되어 위와같은 현상이 나타난다.이를 해결하기 위해서 srand함수를 이용하여 시드값을 설정해주어야 한다. srand로 시드값을 10으로 설정해준 결과와 5를 설정해준 결과가 다르게 나타난다.하지만 같은 시드값으로 재실행을 하면 같은 결과가 나온다. 프로그래머가 실행할때마다 시드값..