Tableau, langage C
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

Tableau, langage C



  1. #1
    ABreton

    Tableau, langage C


    ------

    Bonjour, je me posais une question:

    Est-il possible d'envoyer un tableau dans une fonction sans que celui-ci soit modifié par la fonction? Si oui, comment ça s'écrit ? (étant donné que le tableau est un pointeur ça me pose problème)

    Pour mieux me faire comprendre:
    Je déclare un entier k dans la fonction principale
    J'envoie k dans une fonction qui le récupère sous forme de l'entier k et la fonction fait k=3 mais le k de la fonction principal n'est pas modifié

    Merci.

    -----

  2. #2
    jiherve

    Re : Tableau, langage C

    Bonsoir,
    Normalement en C Ansi seule la valeur du return de la fonction est modifiée(attention certains compilateurs sont stricts à ce sujet ce qui produit des bugs hilarants), ceci dit l'usage permet de passer un pointeur pour tripatouiller les valeurs d'un tableau mais cela se fait de façon explicite dans le corps de la fonction, donc si celle ci ne modifie pas explicitement les valeurs du tableau alors celui ci reste intègre.
    JR
    l'électronique c'est pas du vaudou!

  3. #3
    erik

    Re : Tableau, langage C

    Citation Envoyé par ABreton Voir le message
    Est-il possible d'envoyer un tableau dans une fonction sans que celui-ci soit modifié par la fonction? Si oui, comment ça s'écrit ? (étant donné que le tableau est un pointeur ça me pose problème)
    ça fait longtemps que je n'ai pas touché au c, mais dans mes souvenirs const permet d'être certain qu'une variable ne sera pas modifiée.
    Dans ton cas en déclarant (si tu as un tableau de caractères à passer en paramètre)
    Code:
    MaFonction(const char *MonTableau)
       {
            ...
       }
    le contenu de ton tableau ne peut pas être modifié.

  4. #4
    Jack
    Modérateur

    Re : Tableau, langage C

    Essaie avec void maFonction(const int* montableau)

    Le fait de mettre const indique que la fonction ne modifiera pas les données pointées.
    par exemple, l'instruction
    *monTableau = 5;
    provoquera une erreur à la compilation

    PS: grillé. je n'avais pas rafraichi ma page et n'avais pas vu la réponse d'erik

  5. A voir en vidéo sur Futura
  6. #5
    ABreton

    Re : Tableau, langage C

    Merci pour les réponses.

    Mais c'est pas exactement ce que je veux car dans ma fonction, je veux que le tableau puisse changer (enfin de calculer quelque chose a côté) mais sans que le tableau de la fonction main ne change après être passé par cette fonction.

    Je vais me débrouiller autrement, merci quand meme

  7. #6
    Jack
    Modérateur

    Re : Tableau, langage C

    Bref, tu veux faire une copie du tableau en entrant dans ta fonction, c'est çà?

  8. #7
    jiherve

    Re : Tableau, langage C

    bonsoir,
    comme d'habitude l'accouchement est difficile!
    JR
    l'électronique c'est pas du vaudou!

  9. #8
    ABreton

    Re : Tableau, langage C

    Citation Envoyé par jiherve Voir le message
    bonsoir,
    comme d'habitude l'accouchement est difficile!
    JR
    Je suis venu avec une question précise, on m'a répondu avec une réponse précise. J'ai pas besoin d'en marquer plus.




    Oui, je veux faire une copie de mon tableau en entrant dans ma fonction. Du coup comme solution que j'ai, je passe par un petit tableau annexe qui peut être changé, je m'en fiche. Mais je voulais éviter ça pour essayer d'être le plus compact possible.

    Je fais le jeu Othello (jeu où l'on doit encadrer les pions ennemis pour qu'ils deviennent a nous), et j'essaye de réutiliser des fonctions que j'ai déjà créé. Ici, j'ai une fonction qui cherche si on a encadré des pions ennemis, si oui elle retourne ces pions là. Moi je réutilise cette fonction là, pour enregistrer les cases où l'on peut jouer (afin de créer un "ordinateur") et c'est pour ça que je veux pas qu'il modifie encore le tableau (=grille du jeu).

  10. #9
    Jack
    Modérateur

    Re : Tableau, langage C

    Pour faire une copie locale, 2 solutions:
    - tu crées un tableau et tu le recopies à partir de l'original dans la fonction
    - plus tordu: tu encapsule le tableau dans une structure. En passant la structure en paramètre, tu vas te retrouver avec une structure locale et donc un tableau identique à l'original.

    A+

  11. #10
    ABreton

    Re : Tableau, langage C

    Merci pour tout et bonne fête.

Discussions similaires

  1. Tableau multidimensionnel, langage C
    Par ABreton dans le forum Programmation et langages, Algorithmique
    Réponses: 4
    Dernier message: 16/12/2013, 16h40
  2. langage c, entrer un tableau de structure dans une fonction
    Par invitecd37efaf dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 10/02/2013, 13h31
  3. [Langage C] Erreur dans tableau ?
    Par Lechero dans le forum Programmation et langages, Algorithmique
    Réponses: 4
    Dernier message: 28/12/2012, 10h46
  4. conversion d'un tableau(langage C)
    Par narakphysics dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 08/04/2012, 14h06
  5. Tableau en langage C
    Par invite1439ebd6 dans le forum Logiciel - Software - Open Source
    Réponses: 9
    Dernier message: 20/08/2007, 23h27