IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual C++ Discussion :

[visual studio 2013] tableaux dynamiques


Sujet :

Visual C++

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut [visual studio 2013] tableaux dynamiques
    bonjour
    je rencontre un petit probleme
    j'aimerais savoir pourquoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int i = 4;
    char a[i];
    ne passe pas sous visual studio 2013
    et si c'est normal

    merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 200
    Points : 12 354
    Points
    12 354
    Par défaut
    Il s'agit d'un tableau de taille "dynamique" (VLA Variable-Length Arrays), pas d'un tableau dynamique qui utilise le mot clé new, lui.

    Cette construction vient du C99 et Visual Studio est un compilateur C++ (pas C), qui n'a pas pour vocation à être compatible C99 (je crois que seul GCC supportait cette fonctionnalité et qu'il a arrêté).

    Comme l'utilisation de tableaux à la C est obsolète en C++, cela ne pose aucun problème au code C++.
    Si la taille de votre tableau est connue à la compilation, vous disposez de la classe std::array( http://fr.cppreference.com/w/cpp/container/array ), sinon la classe std::vector ( http://fr.cppreference.com/w/cpp/container/vector ) fera l'affaire.

    Si c'est pour des chaines de caractères, la classe std::string ( http://www.cplusplus.com/reference/string/string/ )est bien plus riche et simple d'utilisation.

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut
    en fait je voulais ma rapprocher des concepts de c#
    c'est a dire que si on utilise un vector<string> par exemple en interne
    on fourni au client (résultat d'une fonction) un tableau de string de taille fixe
    pour eviter que le client ne s'amuse avec la source d'origine
    si je lui renvoyais le vector<string> il pourrait y rajouter des choses ou enlever des choses dedans ....

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 588
    Points
    41 588
    Par défaut
    En C++, tu peux renvoyer une référence const.

  5. #5
    ony
    ony est déconnecté
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int i = 4;
    char a[i];
    pour déclarer un tableau il faut que le paramètre doit être un nombre entier
    ex: char a[4];.

    mais pour rendre un tableau dynamique, le mieux c'est d'utiliser un pointeur
    ex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int taille1 = 2
    int **ptr;
     
    ptr = malloc(taille1 * sizeof(*ptr));       //On alloue 'taille1' pointeurs.
    ......
    free(ptr);

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 200
    Points : 12 354
    Points
    12 354
    Par défaut
    ony, ce que tu écris est peut-être exacte en C (et encore) mais absolument faux en C++.

Discussions similaires

  1. Réponses: 89
    Dernier message: 19/01/2015, 10h58
  2. Microsoft présente Visual Studio 2013 et Team Foundation Server 2013
    Par Stéphane le calme dans le forum Autres Logiciels
    Réponses: 9
    Dernier message: 09/07/2013, 11h54
  3. [Débutant] [Visual studio 2008]Combobox dynamiques
    Par Mykimix dans le forum Visual Studio
    Réponses: 2
    Dernier message: 18/09/2012, 10h17
  4. Crystal Report - Visual Studio 2010 - Image dynamique
    Par Negaton dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 31/01/2011, 12h38
  5. [C#/Visual Studio 2008] Ajout dynamique
    Par neo18045 dans le forum ASP.NET
    Réponses: 11
    Dernier message: 27/04/2010, 10h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo