문장(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])();
}