no save
Assistance
Achat
News

Forum | programmation
[C++] passage par pointeur
mamiemando, le jeu. 16 nov. 2006 à 15:06:01
Rappels sur les const

Il ne faut pas confondre un :
const char * (la chaine pointée est constante)
char * const (le pointeur est constant)
const char * const (les deux sont constants)

Pour ton problème...

Je rappelle qu'en C++ tu peux utiliser les référence et encore mieux les std::string :

#include <string>

void f(std::string & s=""){
s = "essai";
}

Références et pointeurs

A noter que en C et en C++ les paramètres sont des recopies.
- un passage par pointeur va consister à empiler l'adresse de la variable pointée. Cette adresse est recopiée en mémoire mais pas la zone pointée. C'est pour ça qu'en C / C++ on utilise des pointeurs ou des références pour modifier la valeur d'un paramètre (plus exactement la valeur d'une variable pointée par un paramètre).
- on doit au maximum utiliser les références pour que le programme ne perde pas du temps à recopier inutilement des paramètre. Par exemple si je manipule un graphe de grande taille :
void f(graph_t & g); // rapide
void g(graph_t * g); // rapide
void h(graph_t g): // lent !!! car on recopie le graphe à chaque appel de h


Et les const...

Il faut par ailleurs veiller à bien mettre les const (cf début du post) quand ils sont justifiés. Typiquement :

#include <string>
#include <iostream>

void affiche(std::string & s){
std::cout << s << std::endl;
}

void affiche2(const std::string & s){
std::cout << s << std::endl;
}

int main(){
const std::string s = "plop";
affiche(s); //erreur de compilation car affiche de garantit pas la constance
affiche2(s); //ok
return 0;
}

Bonne chance
Précédentkij_82
nov. 06


REPONSES
kij_82
nov. 06
Char Snipeur
nov. 06
Char Snipeur
nov. 06
kij_82
nov. 06
mamiemando
nov. 06
Version Web
Réalisé par RedShift
no save