retrox a écrit :
Voire meme interdire cette écriture dans le standard... (corrolaire : à qui/à quoi sert cette écriture? (à part aux professeurs qui ont le K&R sous le nez pour écrire leurs exos ))
|
Elle a valeur 'documentaire', et est obligatoire quand on utilise plus d'une dimension. En fait l'écriture de base est :
Code :
- void f_1D (T a[X])
- void f_2D (T a[Y][X])
- void f_3D (T a[Z][Y][X])
|
etc.
Comme le compilateur n'a pas besoin de la dimension la plus à gauche, elle peut se simplifier en :
Code :
- void f_1D (T a[])
- void f_2D (T a[][X])
- void f_3D (T a[][Y][X])
|
etc.
Comme le paramètre est en réalité un pointeur et non un tableau (malgré les apparences), on peut aussi écrire comme ceci :
Code :
- void f_1D (T *a)
- void f_2D (T (*a)[X])
- void f_3D (T (*a)[Y][X])
|
Bienvenue dans le monde magique du langage C.
Code :
- enum
- {
- X = 2,
- Y = 3,
- Z = 4,
- };
- static void f_1D (int *a)
- {
- }
- static void f_2D (int (*a)[X])
- {
- }
- static void f_3D (int (*a)[Y][X])
- {
- }
- int main (void)
- {
- int a[X];
- int a2[Y][X];
- int a3[Z][Y][X];
- f_1D (a);
- f_2D (a2);
- f_3D (a3);
- return 0;
- }
|
Message édité par Emmanuel Delahaye le 04-08-2006 à 15:55:28
---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/