Pointeurs...

cs_thebigbang Messages postés 196 Date d'inscription vendredi 21 décembre 2001 Statut Membre Dernière intervention 25 juillet 2006 - 2 juil. 2002 à 22:27
Dorgendubal Messages postés 66 Date d'inscription vendredi 3 mai 2002 Statut Membre Dernière intervention 11 juillet 2002 - 3 juil. 2002 à 08:08
salut à vous tous...

QQ1 pourrait-il me préciser l'utilisations des pointeurs en C/C++ ?

Parce que j'ai lu des bouquins et je comprends la déclaration, l'initialisation , mais je vois pas bien a quoi ca sert, et surtout dans quel cas s'en servir ?

merci

bigbang
http://bigbang44.free.fr

2 réponses

cs_pheno Messages postés 141 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 23 mars 2005 1
3 juil. 2002 à 06:52
tu px t en servir pour passer des variables par adresses et non par valeur à une fonction ou à une procedure par exple
void main(void)
{
......
fonct(&var);
....
}
void fonct(type *ptrvar)
{
....
}

Chevalier Pheno Starboard, membre de la Freeman-Corp
0
Dorgendubal Messages postés 66 Date d'inscription vendredi 3 mai 2002 Statut Membre Dernière intervention 11 juillet 2002
3 juil. 2002 à 08:08
Les pointeurs, ça sert à trois choses :

1)Utiliser un/plusieurs arguments d'un fonction comme "output" (ou à modifier) :

Par exemple, je veux initialiser deux variables :

void init(int *x, int *y)
{
*x = 0;
*y = 0;
}

int x,y;
init(&x,&y);

Note : si tu le fais sans pointeur, tu initialiseras des variables locales, ce qui n'aura aucun effet à l'extérieur de ta fonction.

2) Economiser du temps :
car un pointeur a tjrs une taille (sizeof) fixe (4Bytes je crois).

Exemple:
struct myStr {
long x,y,z;
double a,b,c;
...
} myS;

void foo1( myStr *str )
{
...
}

void foo2( myStr str )
{
....
}

void foo3( myStr &str)
{
}

le pointeur (4Bytes) est envoyé à la fonction foo1 alors que toute la structure (>36Bytes) est envoyée à la fonction foo2 ... donc une sérieuse économie de temps. La fonction foo3 revient à peu près au même que foo1.

3)Créer des tableaux dynamiques

Par exemple :
int *table;
table = (int*)malloc( n * sizeof(int));

plutôt que

int table[10]; (static)

Voilà ... j'espère que ça t'aidera.

Sven
0
Rejoignez-nous