Initialisation de tableau

Initialisation de tableau - C - Programmation

Marsh Posté le 05-05-2010 à 21:56:20    

Bonsoir,
 
j'ai défini un polynome de la manière suivante :

Code :
  1. typedef struct{
  2. int deg;
  3. int *coefficients;
  4. }polynome;


 
puis je crée une methode ayant pour parametres des polynomes
 
void methode(polynome p1, polynome p2){
 int deg = p1.deg + p2.deg;
 int coef[deg] = {0};
}
[cpp][/cpp]
A  la compilation j'ai l'erreur suivante : variable-sized object may not be initialized.
Est ce parc que j'ai initialisé la taille avec une variable? cela ne se fait pas?
 
Merci pour votre aide  
Bonne soirée

Reply

Marsh Posté le 05-05-2010 à 21:56:20   

Reply

Marsh Posté le 05-05-2010 à 22:09:48    

Je remets ma methode
 

Code :
  1. void methode(polynome p1, polynome p2){
  2. int deg = p1.deg + p2.deg;
  3. int coef[deg] = {0};
  4. }


 
voila  :)

Reply

Marsh Posté le 05-05-2010 à 22:26:31    

Un tableau doit avoir une taille connue a la compilation en C.
Seule les extensions C99 (pas activées par défaut en général) permettent d'utiliser un tableau dont la taille n'est connue qu'a l'exécution.
Il va donc te falloir lire la doc de ton compilo pour savoir comment activer les extensions C99.
Sinon, il faut faire de l'allocation dynamique:

Code :
  1. void  methode(polynome p1, polynome p2){
  2. int deg = p1.deg + p2.deg;
  3. int *coef = malloc(deg*sizeof(int));
  4. ...
  5. }


A+,


Message édité par gilou le 05-05-2010 à 22:33:03

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 05-05-2010 à 22:59:54    

Okay merci beaucoup, je vais opter pour l'allocation dynamique !  ;)
Merci à toi
Bonne soirée !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed