Tamanho de matrizes e ponteiros

Aqui está o meu código de exemplo

#include<stdio.h>
void main()
{
 int arr[]={1,2,3,4,5,6};
 char *ptr,a;
 a='c';
 ptr=&a;
 int *ptr1,a1;
 a1=4;
 ptr1=&a1;
 printf("%d  %d   %d",sizeof(arr), sizeof(ptr1), sizeof(ptr));
}

Agora, tanto quanto eu entendo, o tamanho do vai me dizer o tamanho necessário para armazenar a variável, agora a saída para este é

24 4 4

Por que o tamanho dearr=24, afinal, é apenas um ponteiro e deveria ter tamanho = 4?

Obrigado.

questionAnswers(5)

yourAnswerToTheQuestion