블로그

  • 함수 포인터

    문장(statement)이 정수, 혹은 실수처럼 어떤 값(value)을 가질 때 이러한 문장(statement)을 표현식(expression)이라고 한다. 문장은 ;으로 끝나므로 쉽게 구분 가능ㅎ다. 문장에서 ;을 제외한 부분이 표현식이 되려면, 그것이 값이어야 한다. 예를 들면, 2+3; 이라는 문장에서 2+3dms 5라는 값을 가지므로 표현식이다. 하지만 return; 이라는 문장에서 return은 값을 가지지 못하므로 표현식이 아니다. 표현식은 등호(=)의 오른쪽에 사용될 수 있음을 의미한다. 함수의 이름이 표현식임을 아는 것이 중요하다.

    int sum(int a, int b) { return a + b; }
    
    void main()
    {
        int (*fp)(int, int); // 함수 포인터 변수
        int i;
    
        fp = Sum;
        i = fp(2, 3);
        printf("%d \n", i);
    }

    실행파일이 메모리에 로드되면 함수나 변수들이 고유한 메모리 주소를 가지게 된다. 이렇게 함수나 변수의 실제 주소를 결정하는 것을 바인딩이라고 한다.

    class CClass
    {
        ...
        void DoIt();
        ...
    };
    
    void CClass::DoIt()
    {
        static void (CClass::*fp[3])() =
        {
            CClass::State_Idle,
            CClass::State_Attack,
            CClass::State_Gameover,
        };
    
        (this->*fp[m_iState])();
    }
  • 코드의 적!!!

    코드를 평가할때 취할수 있는 방법

    • 코드의 간결함
    • 기능의 풍부함
    • 실행속도
    • 코드 작업시간
    • 안정성
    • 유연성

    여기서 중요한 점은 각각의 요소들이 배타적이라는 사실입니다.  그렇다면 어떤상황에서 어떤것에 가치를 둬야할지 알수 있는가? 그 결정을 내린 이유는 합리적인가?   이러한질문에 너무나도 당연한 사실은 “간결함”에서 시이하는 것이다

    다른방향으로 나이갈 필요성을 느낄때 그때시작해도 늦지 않는다는것이다

    “속도와 결정 사이에 존재하는 관련성 …   빠르고 좋은 결정은 있지만, 느리고 좋은 결정은 없다”

    @timoreilly

  • 프로그래머로서의 톱날을 벼리기 위해 무엇을 추천하는가?

    사람들은 종종 열등감에도 불구하고가 아니라 열등감 때문에 성공하는 경우가 있다. 집착은 성공을 나타내는 훌륭한 징후일 때가 많다. 어떤 사람이 집착하고 있는 것을 이해하면 그 사람의 내면적 동기를 이해 하는 것이다. 그러한 집착을 위해 그 사람은 아마도 지구 끝까지 걸어갈 수도 있을 것이다.

    톱날(연장)의 정비를 통해 수월한 작업을 가능하게 만들수 있다.   프로그래머에게 연장의 정비란 무엇인가에 대한 질문은 여전히 남아 있다.   스킬?방법론?숙달능력치 등등 많이 있지만, 코딩을 즐기는 열정과 주변의 변화해 가는 상황에 대한 적응력의 절충점을 찾아 나아가는게 아닐까 생각이 된다.   그 방법론에 대해서는 여기저기 많이 기술되어 있으니  생략하는 쪽으로 ㅋㅋ