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 :

Fonction qui retourne un tableau de flottants


Sujet :

C

  1. #1
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 109
    Points : 1 068
    Points
    1 068
    Par défaut Fonction qui retourne un tableau de flottants
    Bonjour à toutes et à tous,

    Cette question a dû être posée des milliers de fois. Pour autant, je n'arrive pas à comprendre.

    Je définis un tableau :
    puis ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void formeOnde(double **onde) {
      for (uint8_t i = 0; i < 10; i++) {
        *onde[i] = i;
      }
    }
    Pour autant que la syntaxe de la fonction soit correcte, quelle est la syntaxe pour appeler cette fonction ?

    Cordialement.

    Pierre.

  2. #2
    Membre chevronné Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 698
    Points : 1 776
    Points
    1 776
    Par défaut
    Hello,

    Le tableau onde est un tableau à une dimension, pourquoi déclarer un tableau à deux dimensions dans la fonction ?

    Le plus classique
    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
    16
    17
    18
    19
    20
    21
    22
    #include <stdio.h>
     
    #define MAX_WAVE 10
     
    void Init(double wave[MAX_WAVE]) {
        for(int i=0; i<MAX_WAVE; i++)
            wave[i]=i+1;
    }
     
    void Display(double wave[MAX_WAVE]) {
        for(int i=0; i<MAX_WAVE; i++)
            printf("%.1lf ", wave[i]);
    }
     
    int main(void) {
        double wave[MAX_WAVE];
     
        Init(wave);
        Display(wave);
     
        return(0);
    }
    On écrit "J'ai tort" ; "tord" est la conjugaison du verbre "tordre" à la 3ème personne de l'indicatif présent

  3. #3
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 109
    Points : 1 068
    Points
    1 068
    Par défaut
    Merci "edgarjacobs" pour cette solution qui est très simple.

    Je n'y avais pas pensé car je n'avais pas compris qu'un tableau est un pointeur sur la première valeur et que donc, il n'est pas passé en paramètre, mais par adresse dans la fonction.

    Ce même programme en utilisant un simple double et non un tableau de double ne fonctionne pas. C'est pourquoi j'avais cherché une syntaxe avec des pointeurs.

    Cordialement.

    Pierre.

  4. #4
    Membre chevronné Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 698
    Points : 1 776
    Points
    1 776
    Par défaut
    Si tu veux passer une simple variable pour la modifier dans une fonction, alors il faut passer son adresse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void Modif(int *x, int *y) {
        *x=un int;
        *y=un int aussi;
    }
     
    void foo(....) {
        int x, y;
        ....
        Modif(&x, &y);
        ....
    }
    On écrit "J'ai tort" ; "tord" est la conjugaison du verbre "tordre" à la 3ème personne de l'indicatif présent

  5. #5
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 109
    Points : 1 068
    Points
    1 068
    Par défaut
    Citation Envoyé par edgarjacobs Voir le message
    Si tu veux passer une simple variable pour la modifier dans une fonction, alors il faut passer son adresse ...
    Ça, c'est ce que j'avais essayé de faire sans succès avec un tableau.

    Cordialement.

    Pierre.

  6. #6
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 491
    Points : 13 721
    Points
    13 721
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ChPr Voir le message
    Je n'y avais pas pensé car je n'avais pas compris qu'un tableau est un pointeur sur la première valeur et que donc, il n'est pas passé en paramètre, mais par adresse dans la fonction.
    Ce n'est pas tout à fait exact. C'est un aspect un peu "obscur" du C. J'ai écrit un article sur ce sujet il y a une éternité : https://gradot.wordpress.com/2012/08...ointeurs-en-c/ J'espère qu'il te précisera les choses et améliorera ta compréhension.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 22/09/2006, 19h17
  2. Fonction qui retourne un tableau ou 2 variables ? possible ou non
    Par jiojio dans le forum VB 6 et antérieur
    Réponses: 45
    Dernier message: 05/06/2006, 16h00
  3. [VB] Fonction qui retourne un tableau
    Par ptitsoleil87 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 24/12/2005, 11h52
  4. Fonction qui retourne un tableau
    Par _lara_ dans le forum ASP
    Réponses: 6
    Dernier message: 24/05/2004, 16h06

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