I understand you thought incrementing the pointer using sizeof(int)
will get you to the next member in the array. However, this is not how it works:
when you write:
printf("%d", *(num + 1));
the pointer advances to the next member in the array (it is an int pointer and therefore when you increment it, it advances sizeof(int) (which is usually 4) bytes). But when you write:
printf("%d", *(num + (sizeof(int)*1)));
you try to advance the pointer by 4 members (or 4*sizeof(int) bytes), which is out of the boundaries of your array.