array refferences the fourth element (i.e. the number four in your case).
array (by itself) refferences the beginning element i.e. array.
array = 1
array = 4
4 - 1 = 3
If you wanted the second argument to output a number 6, you would have to declare array b to hold numbers up to 7, and then subtract b. Or you could do printf("%d %d", &a-a, &b+b) that would produce 3 6 also.
You are taking the difference between pointers; the result is the number of objects between the two addresses. There are three objects between element 0 and element 3, regardless of the size of the objects.