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

Langage C++ Discussion :

Qu'est-ce que ceci : int(*) [1];


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    professeur des universités à la retraite
    Inscrit en
    Août 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : professeur des universités à la retraite

    Informations forums :
    Inscription : Août 2008
    Messages : 364
    Par défaut Qu'est-ce que ceci : int(*) [1];
    Bonjour,
    je suis surpris d'observer que le programme suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int main() {
      int(*) [1];
    }
    est compilé sans sourciller par g++ (y compris avec les options -Wall -pedantic : pas même le moindre "avertissement").
    Quelqu'un peut-il m'expliquer patiemment ce que son unique ligne signifie, quelle est sa syntaxe et sa sémantique ??

  2. #2
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    C'est un pointeur sur un tableau d'entier (ici un entier). Bref là comme ça c'est sans intérêt.

  3. #3
    Membre très actif
    Profil pro
    professeur des universités à la retraite
    Inscrit en
    Août 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : professeur des universités à la retraite

    Informations forums :
    Inscription : Août 2008
    Messages : 364
    Par défaut
    C'est un pointeur sans nom vers un tableau de un entier ? C'est une déclaration de quelque chose (un pointeur) qui n'a pas de nom ?
    J'ai du mal...
    Je comprends ceci (qui compile aussi) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int main() {
      int(*a) [1];
    }
    mais ce n'est justement pas l'exemple que j'ai donné...
    J'aurais pensé que mon exemple serait aussi mal formé que, disons :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int main()
    {
      int;
    }
    pour lequel g++ me dit gentiment, et en français, "déclaration qui ne déclare rien du tout"

  4. #4
    Membre émérite Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 890
    Par défaut
    Avec Visual Studio Express, le code suivant ne compile pas:

    error C2059: syntax error : ')'
    [edit]J'avais écrit une bêtise que je supprime[/edit]

  5. #5
    Membre très actif
    Profil pro
    professeur des universités à la retraite
    Inscrit en
    Août 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : professeur des universités à la retraite

    Informations forums :
    Inscription : Août 2008
    Messages : 364
    Par défaut
    Aurais-je mis le doigt sur une bogue de g++ ? Sais pas trop où ni comment trouver les bogues connues de g++ (une info là-dessus ?)

  6. #6
    Membre émérite Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 890
    Par défaut
    ...ou plutôt un comportement non prévu par les spécifications. Par contre je ne comprend pas ce que ça fait. Dans un premier temps, j'avais écrit que:
    était équivalent à
    c'est à dire un tableau de pointeurs. Sauf que si ensuite on fait:
    J'ai l'erreur:
    error C2440: '=' : cannot convert from 'int' to 'int [1]'
    dans le premier cas et pas dans le second.

    Ca a plutôt l'air de déclarer un pointeur sur un tableau, puisque dans le premier cas le code suivant se compile:

Discussions similaires

  1. Est ce que ceci est un bug ou non
    Par saha84 dans le forum Scilab
    Réponses: 0
    Dernier message: 26/03/2015, 13h40
  2. Est-ce que je peux faire ceci ?
    Par Seb04 dans le forum MySQL
    Réponses: 3
    Dernier message: 20/10/2014, 21h35
  3. qu'est ce que c'est ? *(int *)a;
    Par salif98 dans le forum C
    Réponses: 18
    Dernier message: 30/09/2006, 13h31
  4. Qu'est-ce que c'est que Nessus, ça fait quoi exactement ?
    Par PeterT dans le forum Développement
    Réponses: 3
    Dernier message: 24/07/2002, 11h23
  5. Réponses: 3
    Dernier message: 19/07/2002, 15h01

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