Adresse de tableau contre l'adresse de tableau[0] - langage C

Ma question est pourquoi l'adresse d'un tableau différer de l'adresse de sa première position?

Je suis en train d'écrire mon propre malloc, mais pour commencer, je suis juste en allouant une partie de la mémoire et de jouer avec les adresses. Mon code ressemble à peu près comme ceci:

#define BUFF_SIZE 1024
static char *mallocbuff;

int main(){
     mallocbuff = malloc(BUFF_SIZE);
     printf("The address of mallocbuff is %d\n", &mallocbuff);
     printf("The address of mallocbuff[0] is %d\n", &mallocbuff[0]);
}

&mallocbuff est la même adresse à chaque fois que je le lance. &mallocbuff[0] est un hasard de l'adresse à chaque fois. Je m'attendais à de la adresses correspondent les uns aux autres. Quelqu'un peut-il expliquer pourquoi ce n'est pas le cas?

La matrice ne sont pas toujours équivalentes à des pointeurs, et vice versa..
N'utilisez pas de %d pour imprimer une adresse. Utilisation %p, et à lancer les adresse à void*: printf("%p\n", (void*)&whatever);

OriginalL'auteur GetOffMyLawn | 2010-04-24