Humanity

Edit the world by your favorite way

ポインタ同士の加減算

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

#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;
}