프로그래밍 언어 관련 수업을 듣다 보면 재귀 호출에 대해서 배우게 된다. 어떤 알고리즘을 해결하면서 재귀 함수는 꽤 중요한 역할을 가지고 있는데, 피보나치 수열의 항이나 수의 분할 정도를 하는 경우가 많다. unsigned long long stupid(unsigned long long n) { return (n == 1 || n == 2) ? n - 1 : stupid(n - 1) + stupid(n - 2); } 1이나 2일때는 0, 1을 반환하고 그렇지 않을때는 이전 항과 그 전 항의 합을 반환한다. 이때 이전 항을 다시 구하게 되는 것이다. 아주 간단한 모습을 하고 있으면서 원하는 결과를 뱉기는 한다. 10정도를 넣으면 34라는 올바른 결과를 반환한다. 하지만 n에 100을 넣으면? 위의 코드는 ..
사실 꽤나 민감한 내용이다. 이전에 KLDP와 같은 커뮤니티에서는 이걸로 열찬 토론하는 장면도 목격할 수 있었다. 어떤 경우에서는 Java의 모든 인스턴스가 포인터라느니, 자료형에 대해서는 call by value가 된다느니 일이 많았다. 조금 엄밀한 방향에서 Java의 포인터에 대해 생각해보도록 하자. 포인터는 특정 개체의 주솟값을 나타내고, 주소를 이용하여 역참조를 할 수 있어야한다. 먼저 주소를 가져올 수 있는지 알아보자. Java에서 Instance의 주솟값을 가져오는 방법부터 순탄치 않다. 어쩌면 당연하게도 Unsafe 클래스의 기능을 사용하여야 한다. JDK 9부터는 상당히 까다로워졌는데, 번거로운 고로 JDK 8의 sun.misc.Unsafe를 사용하도록 한다. Deprecated 판정된 방..
마이크로소프트 Visual Studio를 사용하면서 Visual C++를 사용하다보면 종종 새 헤더를 생성하면서 '#pragma once'라는 코드와 생성되는 것을 확인할 수 있다. 또, C 또는 C++ 헤더를 작성하면서 헤더가 중복돼서 포함되지 않도록 매크로를 사용하는 경우가 많..지 않고 모든 경우에서 사용한다. #ifndef __SOME_OF_HEADER_H #define __SOME_OF_HEADER_H // ... code ... #endif 매크로의 이름은 다양하게, 각자의 코딩 스타일에 맞게 작성하겠지만 이런 뉘앙스의 코드를 작성해서 중복된 헤더 포함을 피할 것이다. 하지만 이쁘지도 않고 vim같은 도구로 코드를 작성하는 사람들은 귀찮거나 보기 나쁜 코드가 될 수도 있다. 이를 한번에 해결해..
간혹 포인터의 주소 연산자 (&)를 이용하여 역참조 등을 할 일이 있다. 근데 절대 기억하지 못하는 특정 개체를 해제하지 않고 주소만으로 불러와야할 때도 있다. 어떤 값의 주소를 이용하여 역참조를 해보자. Foo.h class Foo { public: Foo(const int value); ~Foo(); int getValue(); private: int value; }; 우리가 잃어버릴 클래스다. value 변수는 생성자에서 설정한 value로 설정된다. Testsuite.cc #include <iostream> #include <cstdint> #include <sstream> #include <string> #include "Foo.h" int main() { Foo f..
- Total
- Today
- Yesterday
- Java
- nodeal
- dokdo project
- inline class
- g2 korea
- 객체지향
- dokdo 4.0.3
- LG
- C++ 업캐스팅
- CM10.2
- OOP
- c++ struct
- rule_of_five
- c++11
- CM11
- cyanogenmod
- f320s
- Kotlin
- 포인터
- c++ 상속
- vector
- linaro
- PipelineContext
- G2
- f320k
- C++
- C
- dokdo-project
- d802
- rule_of_three
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |