Les tableaux à une dimension en C

  int tab[10]={1,2,3,5,89,78,67,34,67,56};       /* déclaration d'un tableau de 10 entiers initialisés. /*
  int tab2[25];     /* déclaration d'un tableau de 25 entiers */     

Le compilateur C réserve une zone contigüe en mémoire pour tout le tableau. Ainsi, il réserve une zone contigüe de 40 octets (quatre octets pour un entier * 10)  pour tab et de 100 octets pour tab2.  

ATTENTION: En C, il n'y a pas de vérification de débordement de tableau à l'exécution:
  • L'erreur liée à l'instruction tab[10] = 1; ne sera pas détectée par le compilateur ni même à l'éxécution mais va écrire dans une zone de 4 octets en dehors du tableau. D'ailleurs en supposant que les zones pour tab et tab2 sont consécutives tab[10] = 1; va écraser la valeur de tab2[0] avec 1.  C'est une erreur très difficile à détecter. 


suivant      plan