Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
526 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Passage de la taille d'un tableau en argument

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Passage de la taille d'un tableau en argument

n°1185501
Profil sup​primé
Posté le 26-08-2005 à 16:04:15  answer
 

hi
 
dites voilà jai un probleme
 
je passe par argument d'une fonction la taille dun tableau que je déclare au début de la fonction meme
 
ca compile avec Dev C++ mais avec Microsoft Visual C++ ca amrche pas
 
quelqu'un peut m'expliquer?
 
on a le droit de faire ça ou pas?
 
merci d'avance
 

mood
Publicité
Posté le 26-08-2005 à 16:04:15  profilanswer
 

n°1185514
Elmoricq
Modérateur
Posté le 26-08-2005 à 16:09:20  profilanswer
 


 
Bien sûr !
 
Le temps de consulter ma boule de cristal...
http://www.leverseau.fr/boutique/images/8034.jpg
 
Hmm. Marche pas. Bon, ben poste ton code qui ne fonctionne pas, alors.  [:jagstang]

n°1185517
Profil sup​primé
Posté le 26-08-2005 à 16:10:43  answer
 

bin les erruers de compilation sous MVC++ sont :  
expect constant expression
 
mon code il est tout simple
 
void f(int n)
{
 double arr[n];
 
 
 
}
 
sous dev c++ ca passe
 
on ma suggeré que ct peut etre que certaine version de C acceptait ce genre de choses (les + recentes probablement) et pas d'autres

n°1185531
Elmoricq
Modérateur
Posté le 26-08-2005 à 16:13:19  profilanswer
 

Normal, ça ne fonctionne qu'en C99 ce que tu fais, ta version de VC++ n'implémente peut-être pas cette fonctionnalité.
 
Solution :
 

Code :
  1. void f(int n)
  2. {
  3.    double *arr = malloc(n * sizeof *arr);
  4.    if ( arr == NULL )
  5.    {
  6.       /* gerer l'erreur */
  7.    }
  8.    else
  9.    {
  10.       /* sinon continuer le programme, arr est alloue */
  11.       /* et quand on a fini, on libere la memoire */
  12.       free(arr);
  13.    }
  14. }


Message édité par Elmoricq le 26-08-2005 à 16:24:34
n°1185536
Profil sup​primé
Posté le 26-08-2005 à 16:15:25  answer
 

nan dsl ca marche pas
je voulais dire de mettre const int n


Message édité par Profil supprimé le 26-08-2005 à 16:17:31
n°1185540
Elmoricq
Modérateur
Posté le 26-08-2005 à 16:16:28  profilanswer
 


 
Dans le sujet, y a marqué "[C]" :D
 
Maintenant si c'est en C++, "new" n'est pas "meilleur", il est obligatoire.  
malloc() en C++, c'est une hérésie ;)

n°1185541
Elmoricq
Modérateur
Posté le 26-08-2005 à 16:16:42  profilanswer
 


 
Tu n'es pas assez vague, pourrais-tu être moins spécifique ?

n°1185546
Profil sup​primé
Posté le 26-08-2005 à 16:18:06  answer
 


y met tjrs la meme erreur quoi

n°1185551
Elmoricq
Modérateur
Posté le 26-08-2005 à 16:20:36  profilanswer
 


 
Ben c'est normal, c'est défini dans la norme C99 cette fonctionnalité, et je ne connais pas de compilateur qui l'implémente en entier encore, la plupart en sont encore au C89  
[:klem3i1]  
 
Utilise la solution que je te propose, avec malloc().
 
 
 
 
Oops, c'est vendredi j'ai oublié le free()  [:jar jar]  
 
J'édite mon message :o


Message édité par Elmoricq le 26-08-2005 à 16:21:15
n°1185553
Taz
bisounours-codeur
Posté le 26-08-2005 à 16:21:21  profilanswer
 

en C ANSI et C++, la taille des tableaux est statique par définition (connue à la compilation). C99 permet une taille dynamique, mais c'est une technique généralement déconseillé en faveur de l'allocation dynamique

mood
Publicité
Posté le 26-08-2005 à 16:21:21  profilanswer
 

n°1185653
Emmanuel D​elahaye
C is a sharp tool
Posté le 26-08-2005 à 18:02:19  profilanswer
 

Taz a écrit :

en C ANSI et C++, la taille des tableaux est statique par définition (connue à la compilation). C99 permet une taille dynamique, mais c'est une technique généralement déconseillé en faveur de l'allocation dynamique


En plus, je ne connais pas d'implémentation conforme (gcc 4.x : VLA : 'broken')
 


---------------
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/
n°1185655
0x90
Posté le 26-08-2005 à 18:02:53  profilanswer
 

Spoiler :


Use the alloca() luke ! [:cupra]


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1185657
Emmanuel D​elahaye
C is a sharp tool
Posté le 26-08-2005 à 18:07:48  profilanswer
 

0x90 a écrit :

Spoiler :


Use the alloca() luke ! [:cupra]



Bah non. Pas standard et complètement obsolete.. Use malloc() / free().
 


---------------
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/
n°1185662
0x90
Posté le 26-08-2005 à 18:13:25  profilanswer
 

Emmanuel Delahaye a écrit :

Bah non. Pas standard et complètement obsolete.. Use malloc() / free().


 
d'ou le combo [spoiler]/[:cupra] ;)
m'enfin ca reste une fonction _amusante_ à utiliser, avec ce petit piquant dans l'échine à chaque exécution... mmm...
 
 


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Passage de la taille d'un tableau en argument

 

Sujets relatifs
Mettre une méthode de classe en argument d'une autre méthodeOmbre pour un tableau
taille de font avec exceltri d'un tableau avec des dates
[RESOLU]stocker des valeurs en tableau de session ...?Aligner verticalement un tableau dans un tableau en HTML....
Hauteur de tableau centréScrollbar dans tableau sans div?
Fixer verticalement la taille d'une cellule[Shell] Comment Faire 1 Tableau Avec Des Colonnes
Plus de sujets relatifs à : Passage de la taille d'un tableau en argument


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR