목록분류 전체보기 (225)
그냥 게임개발자
역참조 연산자라는 것은 #include using namespace std; int main() { int a = 10; int* b = &a; cout
포인터란? 0x00000..... 같은 주소를 담는 타입이 포인터다. 주소를 담는 타입 adress를 담는 Type int는 정수를 담지요? float는 실수를 담지요? pointer는 주소를 담는다 그것도 첫번째 바이트 주소를 가리킨다. 예를 들자 여기서 int라는 타입을 선언하게되면 메모리에 이렇게 담기게 된다. 그렇다면 int*는 무엇을 담는 것인가? 지금 int라는 타입을 처음 메모리에 할당할 때 처음 주소는 0x000000이다. 그렇게 해서 0x000000 ~ 0x000003까지 사용하는 것이다. 그러면 int*는 0x000000을 담는 즉 첫번째 byte주소를 담는 타입이다. 또한 포인터는 메모리 동적할당, 데이터를 복사하지 않으며 함수 매개변수로 사용, 클래스 및 구조체를 연결할 때 사용이 ..
예를 들어 int / float를 계산하게되면 어떤 타입으로 변환이 되어 나올까? 바로 float다. 이렇게 타입이 변환이 되는 것을 암시적 형변환이라고 하는데 우선순위는 아래와 같다. 1 long double 2 double 3 float 4 unsigned long long 5 long long 6 unsinged long 7 long 8 unsigned int 9 int(lowest) 이 때문에 vector의 size()를 기반으로 음수가 나올 수 있는 연산을 할 때 주의해야 한다. vector의 size()라는 메서드는 unsgined int를 반환한다. 예를 들어 v.size()값이 8이면 v.size() - 10 이렇게 연산을 할 때 결과값은 음수가 나와야 하지만 unsigned int와 in..
auto는 C#의 var와 같다. 타입 추론을 하여 결정되는 타입이다. #include using namespace std; int a = 1; auto b = 1; int main() { cout
pair와 tuple은 자료구조가 아니지만 C++에서 제공하는 utility라는 라이브러리의 템플릿 클래스이다. 또한 자주사용 되기에 복습해보았다. pair pair는 first와 second라는 멤버변수를 가지는 클래스이며 두 가지 값을 담아야 할 때 쓴다. tuple tuple은 세가지 이상의 값을 담을 때 쓰는 클래스이다. #include #include #include using namespace std; pair pi; tuple tl; int a, b, c; int main() { pi = {1, 2}; tl = make_tuple(1, 2, 3); tie(a, b) = pi; cout
float 실수는 알지 않은가 double도 실수다. 소수점 아래로 15자리까지 표현가능 ㅇㅇ float는 소수점 7자리까지 표현이 가능 float는 4byte; double은 8byte;
간단하게 설명하겠다 어차피 아는거라서 int는 4byte long long은 8byte 표현범위? -9223372036854775808 ~ 9223372036854775807이다. 엄청 많다. typedef long long ll; ll INF = 1318; 보통 Max값을 1e18로 정의해놓고 쓴다.
저번에는 재귀함수로 순열을 만들었다. 이번에는 반복문을 통해 순열을 만들어보자. 일단 코드를 봐보자. 사실 반복문은 쉽다. #include #include using namespace std; int main() { vector ret = {1, 2, 3}; for (int i = 0; i < 3; ++i) for (int j = 0; j < 3; ++j) for (int k = 0; k < 3; ++k) { if (i == j || j == k || k == i) continue; cout