La directive define
La directive define en C permet de déclarer des constantes (non modifiables dans le programme) sans pour cela obliger le compilateur à réserver une zone en mémoire (très utile pour les tailles de tableaux)

syntaxe:
    #define NOMCONSTANTE valeurconstante (par convention le nom est en majuscule)
  #define  NBLIG 10      
/* déclare que  nbLig c'est la même chose que la valeur 10 /*
  #define  NBCOL 12       /* déclare que la chaîne nbCol c'est la même chose que la valeur 12 */

Comparaison entre 3 solutions

 int tab[10];           
 int tab2d[25][80];  

Le programme n'est pas bien paramétré car si les tailles des tableaux doivent être changées, il faudra les changer partout dans le programme, notamment dans les itératives de parcours des tableaux.
 int tailleTab=10;
 int  nbLig=25, nbCol=80;
 int tab[tailleTab];
         
 int tab2d[nbLig][nbCol];      

Le programme est paramétré, en cas de révision il suffit de modifier les valeurs des variables tailleTab, nbLig, nbCol MAIS il y a 12 octets réservés pour ces trois variables ce qui est inutile car elles ne sont jamais modifiées dans le programme.
#define TAILLETAB 10
#define NBLIG 25
#define NBCOL 80
 int tab[TAILLETAB];
         
 int tab2d[NBLIG][NBCOL];      


Le programme est bien paramétré ET il n'y a aucune place réservée en mémoire par le compilateur: c'est la solution parfaite pour la déclaration des tailles de tableau.


ATTENTION: le #define n'est pas une instruction mais une directive de compilation. A la compilation avant même la traduction du programme source le compilateur supprimera tous les #define en remplaçant les constantes par leur valeur dans tout le programme.
suivant        plan