포인터 뺄셈으로 인덱스를 구할 때 유용해서 가끔 쓴다.
커널 소스에서는 오프셋 구하기 등으로 이런 트릭을 매크로 단위에서 구현 해 둔 것을 종종 볼 수 있다. 요즘은 커널 소스 안 봐서 모르겠다.
포인터 뺄셈 무용론은 아마도 임인건 터보C정복에서 포인터 뺄셈은 의미 없다고 한 것에서 유래하지 않았나 싶다. 내가 으릴 적에 그걸 원칙으로 알고 있었다.
main()
{
int a[30];
int *b = &(a[10]);
int *c = a;
int d = b – c;
printf(“%d\n”, sizeof(int));
printf(“%d\n”, d);
}