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 :

probleme programme C


Sujet :

C

  1. #21
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par space_56 Voir le message
    quand je fais la fonction remplir_mat, est-ce que le tableau est-il toujours là en sortant de la fonction ?
    Le tableau il a été défini ailleurs. La fonction n'a que l'adresse... J'ai du mal à saisir la question...

    Si les tableaux à 2 dimensions te posent problème, commence par t'exercer avec un tableau à une dimension... Il y a certains mécanismes qui sont identiques mais plus simples...

  2. #22
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par Nykoo Voir le message
    Ah je viens de comprendre pour l'histoire mat[][TAILLE]. En fait j'étais convaincu que le but était de passer le tableau en paramètre par son pointeur et non pas de passer tout le tableau en paramètre.
    On ne passe pas le tableau en paramètre, mat[][TAILLE] est un pointeur. Si tu fais le test dans ta fonction, tu verras que
    est égale à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sizeof (int (*)[TAILLE])
    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  3. #23
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    f (T p[N][M]) ou f (T p[][M]) ou f (T *p[M])

    Les 3 notations sont identiques et le paramètre est une 'adresse de type tableau de M x T'. p est donc bien un pointeur.
    Attention, ce n'est pas

    mais
    Les deux notations ne sont pas équivalentes. Dans le premier cas, T est de type pointeur sur pointeur sur T (T **). Dans le deuxième cas, p est de type pointeur sur un tableau de M éléments de type T.

    En effet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    f(T *p[M]) 
    /* ou */
    f(T *p[])
    /* ou */
    f(T **p)
    sont trois notations équivalentes différentes de:
    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  4. #24
    Membre confirmé
    Avatar de Nykoo
    Profil pro
    Inscrit en
    Février 2007
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 234
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Hélas, tu es toujours dans la confusion.

    Le paramètre qui permet à une fonction d'accéder à un tableau est toujours un pointeur.

    En 1D, on écrit (T est le type, p le pointeur et N le nombre d'éléments) :

    f (T p[N]) ou f (T p[]) ou f (T *p)

    N étant 'à gauche' (c'est pas frappant quand il n'y a qu'une dimension, OK), il peut être omis.

    Le paramètre est une 'adresse de type T'.

    Ce trois pointeurs sont strictement identiques, parce qu'on est dans le cadre d'un paramètre de fonction.

    En 2 D, on écrit :

    f (T p[N][M]) ou f (T p[][M]) ou f (T *p[M])

    Les 3 notations sont identiques et le paramètre est une 'adresse de type tableau de M x T'. p est donc bien un pointeur.
    Ok donc:

    p[N][M] (lorsqu'il est en paramètre dans un prototype de fonction) n'est pas interprété comme "d'habitude": p[N][M] = *(p+N*M+M) C'est une nouvelle notation.

    J'espère ne pas dire de bétises encore.

  5. #25
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par Nykoo Voir le message
    Ok donc:

    p[N][M] (lorsqu'il est en paramètre dans un prototype de fonction) n'est pas interprété comme "d'habitude": p[N][M] = *(p+N*M+M) C'est une nouvelle notation.

    J'espère ne pas dire de bétises encore.
    Non, il me semble que tu te torture le cerveau pour rien. il n'y a pas de déréférencement ou d'arthimétique de pointeur. Soit le prototype suivant:

    Ici p n'est rien d'autre qu'un pointeur destiné à recevoir l'adresse du 1er élément du tableau qu'on désires utiliser dans le corps de la fonction. Si tu as compris comment fonctionne le passage de l'adresse d'un tableau à 1D en argument d'une fonction, ici, il n'y a absolument rien de nouveau.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/03/2009, 21h10
  2. Probleme programme d'une Liaison RS232 Série en C
    Par dawud dans le forum Réseau
    Réponses: 4
    Dernier message: 02/03/2009, 22h08
  3. Probleme programme java
    Par G4uthier dans le forum Applets
    Réponses: 4
    Dernier message: 13/01/2008, 08h50
  4. probleme programme structuré.
    Par argon dans le forum C
    Réponses: 10
    Dernier message: 31/01/2007, 10h11
  5. Slider problème programmation
    Par Bizarroide63 dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 27/07/2006, 03h43

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