Aritmética do ponteiro com saída errada [duplicado]

Esta pergunta já tem uma resposta aqui:

Aritmética de ponteiro em C 2 respostas

No programa a seguir, aquiptr Foi declarado como um ponteiro para um ponteiro inteiro e atribuído o endereço base da matrizp[], que foi declarado como uma matriz de ponteiro inteiro. Suponhaptr contém o endereço9016 (suponha que o endereço inicial de p seja 9016) antes deptr é incrementado e depoisptr++, ele conterá o valor 9020 (suponha que int use 4 bytes).

assimptr-p deve dar a saída como 4, ou seja (9020-9016 = 4). Mas está dando saída como 1. porque?

#include<stdio.h>
int main()
{
    static int a[]={0,1,2,3,4};
    static int *p[]={a,a+1,a+2,a+3,a+4};
    int **ptr=p;
    ptr++;
    printf("%d",ptr-p);
    return 0;
}

questionAnswers(3)

yourAnswerToTheQuestion