Declaration de tableau apres une instruction etc...
Peut-on faire ce genre de chose en C?
J ai un prog qui marche avec l exemple1, mais peut etre que ce n est pas correct au niveau de la gestion de la mémoire vu que la taille et la declaration se font apres l instruction "int n = taille("matrice.txt");"
pour l'exemple2 j ai un petit doute par rapport au fait que la taille est fonction d un argument...
Si c est correct cela permet de s'affranchir de devoir faire des listes chainees meme si ca a ses avantages ...
exemple1:
Code:
1 2 3 4
|
int n = taille("matrice.txt");
adj tab_adj[n];
/* etc */ |
exemple2:
Code:
1 2 3 4 5 6
|
void fonction(int n)
{
adj tab_adj[n];
/* etc */
} |
Merci d'avance pour vos réponses !
Re: Declaration de tableau apres une instruction etc...
Citation:
Envoyé par Sakijep
Peut-on faire ce genre de chose en C?
Ce dont tu parles s'appelle un VLA (Variable Length Array). C'est une nouveauté de C99, et à ma connaissance, il n'existe pas d'implémentation gratuite et portable (gcc etc.) implémentant correctement cette fonction.
Son usage est donc peu recommandé pour le moment... de plus, en cas d'erreur d'allocation, on est pas prévenu et c'est le comportement indéfini... (Sans parler des problèmes de portée déjà évoqués...)
malloc() / free() est beaucoup plus sûr.