Bonjour,

J'ai eu un cours d'amphi dernierement ou le prof expliquait que, depuis la norme de 99, il est possible de déclarer un tableau de cette manière :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
int f(int n)
{
    int t[n];
    ...
}
Cependant, cela est accepté car ici n est une variable locale. Si nous avions utilisé une variable de classe statique, alors cela aurait été refusé à la compilation. Je lui ai demandé pourquoi, mais je n'ai pas vraiment compris son explication (il est parti dans un délire avec la pile....)

De retour chez moi, je test donc un petit programme avec une variable globale:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
int m = 5;
void f()
{
        int t[m];
        int i;
        for (i = 0 ; i < m ; i++)
        {
                t[i] = i;
                printf("t[%d] = %d\n", i , t[i]);
        }
}
main()
{
        f();
}
Et ça marche... :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
kal@vaio ~ $ ./test
t[0] = 0
t[1] = 1
t[2] = 2
t[3] = 3
t[4] = 4
Y a t il quelqu'un pour m'expliquer réellement ce qu'il se passe depuis cette norme de 99 ?