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

 C Discussion :

Problème de syntaxe


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1
    Par défaut Problème de syntaxe
    Bonjour,

    Voilà il y a quelque chose que j'aimerai comprendre

    Non valide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    [....]
     
    void foo(char *x[])
    {
    	return;
    }
    void bar()
    {
    	foo({"aaa", "bbb", "ccc"});
    }
    [...]
    Valide :
    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
     
    [....]
     
    void foo(char *x[])
    {
    	return;
    }
     
    void bar()
    {
    	char *x[] = {"aaa", "bbb", "ccc"};
    	foo(x);
    }
     
    [...]
    Pourquoi ne peut on pas directement passer un tableau de string en paramètre ?
    Un rapport avec la mémoire allouée sur le "stack" ?

    Merci

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    {<quoi que tu mettes ici>} n'est pas une expression en langage C. Ca ne possède pas de type et moins encore une valeur (on appelle expression quelque chose qui possède, avant tout, un type et facultativement, une valeur). Lors d'un appel à une fonction, il faut fournir des expressions en paramètres ou laisser la parenthèse vide si la fonction ne requiert aucun paramètre.

    {<liste de valeurs>} est cependant autorisé (après un opérateur =) dans une initialisation d'un tableau, d'une union ou d'une structure. Consulter la norme du C (voir FAQ) pour plus de détails sur les initialisations.

  3. #3
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    En C99, tu peux faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <stdio.h>
     
    void foo(char const *x[])
    {
       puts(x[0]);
       puts(x[1]);
       puts(x[2]);
    }
     
    int main(void)
    {
       foo((char const *[]){"aaa", "bbb", "ccc"});
       return 0;
    }

Discussions similaires

  1. Problème de syntaxe - elements['x'].value
    Par Equus dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/02/2005, 11h22
  2. [Interbase] Problème de syntaxe SQL
    Par navis84 dans le forum InterBase
    Réponses: 4
    Dernier message: 22/12/2004, 17h07
  3. Problème de syntaxe
    Par Mister_FX dans le forum ASP
    Réponses: 5
    Dernier message: 30/06/2004, 10h01
  4. Problème de syntaxe ADO ...
    Par bendev dans le forum ASP
    Réponses: 2
    Dernier message: 15/04/2004, 14h38
  5. Réponses: 2
    Dernier message: 08/03/2004, 15h10

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