Pointeurs de pointeurs

Résolu
miximog Messages postés 34 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 14 avril 2007 - 15 nov. 2005 à 22:21
miximog Messages postés 34 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 14 avril 2007 - 16 nov. 2005 à 19:27
Bonjour a tous enfin bonsoir ;)



Enfaîte j'ai lu 2 tuto sur les pointeurs donc je commence a bien
comprendre la notion de pointeurs, mais il y a une notion qui reste
abstraite pour moi s'est les pointeurs de pointeurs en gros c sa "int
**p" fin le type peu changer, mais s'est pas se qui est
important...Je voudrais savoir en faite donc si :



m est un pointeur :

int *m



int *mmafonction(&m);



et que ma fonction est :

mafonction(int **p){

....}



Et bien je suppose que *p est donc la valeur de l'adresse de m


et **p est donc la valeur de l'adresse de la variable pointée par
m


et p c quoi ?

Es bien sa ? et étons obligés de faire comme cela ou un pointeur simple marche aussi bien .... pour pointé un pointeur



merci pour vos réponses ;)




;)

4 réponses

jul39dole Messages postés 117 Date d'inscription mardi 22 juillet 2003 Statut Membre Dernière intervention 21 janvier 2011
15 nov. 2005 à 22:39
int a -> variable int
int *b=&a -> pointeur, pointant sur a (b contient l'adresse de la case mémoire a)
int **c=$b -> pointeur de pointeur, pointant sur b (c contient l'adresse de la case mémoire b)

un pointeur c'est juste une valeur 32bit indiquant une adresse.

Le pointeur de pointeur sert surtout pour les tableaux de pointeur :
exemple avec les chaines de caractères :
char *a = new char[20];
strcpy(a,"bonjour");
char *b= new char[10];
strcpy(b,"salut");
char **m= new char*[2];
m[0]=a;
m[1]=b;

m[0][0] contient 'b'
m[1][0] contient 's'

espérant t'avoir éclairé...
3
neodelphi Messages postés 442 Date d'inscription jeudi 4 avril 2002 Statut Membre Dernière intervention 11 août 2008
16 nov. 2005 à 07:12
Fait attention les pointeurs c'est bien mais c'est traitre... Par
exemple, renvoyer un pointeur d'entier depuis une fonction, tu ne peu
pas faire:



int* fonction(void)

{

int a;

a = 5;



return &a;

}



Dans l'idée c'est presque bon, mais en réalité, puisque a est un
entier déclaré dans ta fonction, lorsque la fonction se termine, la
mémoire est libérée et donc le pointeur renvoyé ne pointe plus sur
rien, ou du moins l'ancienne adresse de a. Bonjour les segmentation
fault...

neodelphi
3
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
16 nov. 2005 à 19:23
En gros on peut dire que un pointeur de pointeur est un tableau :p



++All
3
miximog Messages postés 34 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 14 avril 2007
16 nov. 2005 à 19:27
ok merci pour toutes vos réponses je crois que j'ai compris ! je suis sortie du brouillard
0
Rejoignez-nous