ポインタ同士の加減算

なぜかポインタ同士で差を求めようとするとバイトでのオフセットが返ると思ってた。あぶないあぶない。
正しくはそのポインタ間での要素数が返る。

#include <stdio.h>


int main(void)
{
    int arr[] = { 1,2,3 };
    int *p1 = &arr[0];
    int *p2 = &arr[3];

    // sizeof(int) * 3ではなくて3になる
    printf("p2 - p1 = %d\n", p2 - p1);
    return 0;
}