Pointeurs et tableau de char ?

Résolu
Signaler
Messages postés
15
Date d'inscription
mercredi 8 juin 2011
Statut
Membre
Dernière intervention
17 juin 2013
-
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
-
Bonjour ! J'ai un petit soucis ... voici mon code:
#include 

using namespace std;

void modify(char* ptr[]);

int main()
{
    char mot[]={'a','b','c','d','e','f'}; //j'initialise un tableau
    cout << mot << endl; //je l'affiche
    modify(mot); //je le modifie
    cout << mot << endl; //j'affiche le tableau apres la modifications
    return 0;
}

void modify(char* ptr[])
{
    //ici je veux modifier le tableau qui se trouve a l'adresse de mon pointeur "ptr"
}
 


Je veux, a l'aide d'un pointeur, modifier mon tableau qui est déclaré dans "main"... est-ce possible ?

Merci !

4 réponses

Messages postés
793
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
10 février 2021
8
Bonjour,
Pour ta fonction tu utilises un tableau de pointeurs de char alors qu'il ne faut qu'un pointeur de char:
modify(char* ptr)
Bon codage


louis
Messages postés
15
Date d'inscription
mercredi 8 juin 2011
Statut
Membre
Dernière intervention
17 juin 2013

Merci ! J'ai fait ceci :

void modify(char *ptr);

int main()
{
    char mot[]={'a','b','c','d','e','f'}; //j'initialise un tableau
    cout << mot << endl; //je l'affiche
    modify(mot); //je le modifie
    cout << mot << endl; //j'affiche le tableau apres la modifications
    return 0;
    return 0;
}

void modify(char *ptr)
{
    ptr[0]='f';
}


la sortie :

-abcdef
-fbcdef

Perfecto !
Messages postés
15
Date d'inscription
mercredi 8 juin 2011
Statut
Membre
Dernière intervention
17 juin 2013

Par contre, si je remplace ma fonction modify par ceci :
ptr="dsfhhf";


ca ne marche plus ! (le code s'execute mais la sortie est la meme avant et apres le changement ... :S
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
15
Bonjour,

C'est tout à fait normal. ptr est juste un char* passé par valeur. Le faire pointer sur autre chose n'a aucune influence sur "mot" dans le main.

Suivant ce que tu veux faire, tu peux passer par strcpy, ou passer en paramètre un char**.
Cours sur les pointeurs.

Mais on dirait que tu fais du C++ (iostream), donc tu peux aussi passer par la classe string.