C/C++

  • const는 무조건 앞에 있는 것을 수식한다. 가령 const int* p; 의 경우에는 p가 가리키는 int의 값을 수정하지 못한다. [code language=”c”] int n = 3; const int* p = &n; *p = 4; // error! [/code] int const* p의 경우에도 위와 마찬가지다. 그러나 int* const p의 경우에는 p의 값을 변경하지 못한다. 즉, 한번 가리킨 곳을 계속…

  • 직순열을 출력하려면 ‘이미 출력한 숫자들의 정보’를 알아야한다. 그런데 문제는 ‘순열’이라면 조합과는 다르게 순서가 다르면 다른 종류라는 것이다. 이런저런 생각을 해보면 위와같은 정보를 담기 위해서는 boolean 배열을 넘기는 것이 좋아보이기는 하지만 ‘배열’은 포인터로 넘어가기 때문에 경우에따라 다르게 사용하려면 깊은 복사를 해야하고, 그러면 그만큼 오래걸린다. 10!만해도 3628800가지가 나오기 때문이다. 그래서 떠올린 것은 액세스도 빠르고 표시하는 것도 빠르도록…

  • Shared Library Windows에서 .dll(동적라이브러리) 파일과 비슷하게, gcc/g++에서는 컴파일 할때 공유 라이브러리를 사용할 수 있다. 공유 라이브러리를 만들고 사용하는 방법은 다음과 같다. 공유 라이브러리로 만들 코드는 -fPIC 옵션을 사용해서 목적파일까지만 생성하고, 해당 목적파일과 -shared 옵션을 이용하여 so파일을 생성한다. 이때 생성할 파일의 이름은 lib라는 접두어가 붙는다. 생성된 so파일을 사용하는 실행파일의 코드는 다음과 같은 옵션을 붙여서 컴파일 한다.…