Difference entre pointeur et double pointeur ? [C/C++] - C++ - Programmation
Marsh Posté le 05-07-2009 à 15:20:52
autrement la différence , est que dans t'as première forme, il y a une notion de const
Marsh Posté le 05-07-2009 à 16:53:59
Biensur que si...
Code :
|
Marsh Posté le 05-07-2009 à 16:56:57
Si
Et mieux, tu peux faire...
Code :
|
D'où ma question sur la différence...
Marsh Posté le 05-07-2009 à 16:59:24
tu avais mis un ";" ton expression n'était pas valide
Marsh Posté le 05-07-2009 à 17:02:26
Ok, oui, dans ce contexte elle ne l'est pas...
Maintenant ma question n'a toujours pas de réponse...
Marsh Posté le 05-07-2009 à 17:09:05
bah je t'ai répondu char*p[] pointe sur des données constantes, tu ne pourras pas faire p[0]='x', c'est équivalent à const char **p
Marsh Posté le 05-07-2009 à 22:50:29
on dirait que si...
Code :
|
Compilera sans warning (avec -Wall), et donnera:
Code :
|
Marsh Posté le 06-07-2009 à 00:52:57
argv[0] = "Modif";..... mais biensûr t'en as d'autre des comme ça ?
Marsh Posté le 06-07-2009 à 01:42:59
Glock 17Pro a écrit : bah je t'ai répondu char*p[] pointe sur des données constantes, tu ne pourras pas faire p[0]='x', c'est équivalent à const char **p |
je ne vois pas de constance ici. Je vois juste un tableau de pointeurs sur char. c'est sur qu'on ne peut pas faire p[0]='x' parce qu'il manque un niveau d'indirection, ni p[0] = "une chaine" car le litéral est constant, mais rien n'empêche ici de changer les valeurs du tableau.
pour en revenir à la question de leo42, si c'est dans le prototype d'une fonction, comme tu en prends l'exemple avec argv, avoir char **argv ou char *argv[] ne change rien. Par contre, dans le corps d'un programme, char *t[] et char **p ont bien des comportements différents. On a eu un sujet récemment où il était question des différences entre tableau et pointeur, une petite recherche devrait te permettre de le retrouver.
Marsh Posté le 06-07-2009 à 07:55:49
theshockwave a écrit : |
bah si tout de même, car cette expression doit etre initilaisé avec quelquechose de constant
Marsh Posté le 06-07-2009 à 10:38:01
Glock 17Pro a écrit : |
Je vois bien ce que tu veux dire, mais ton exemple n'est pas vraiment probant, puisque, même si tu fais un char*p[] = { "123", "456" };, rien ne t'empêche de faire pointer p[0] ailleurs par la suite. Effectivement, après, modifier la chaine pointée, c'est une autre question.
Marsh Posté le 06-07-2009 à 13:04:31
leo42 a écrit : Hello,
|
Dans la portee globale:
Dans le premier cas tu as une "tentative definition" d'une variable de type
tableau de pointeur vers char.
Dans le second, tu as une "tentative definition" d'une variable de type
pointeur vers pointeur vers char.
Une "tentative definition" est une definition s'il n'y a pas d'autres
definitions (avec un initialiseur) ou une declaration externe. Dans le cas
du tableau, la taille est fixee a un.
Dans une portee de fonction.
Dans le premier cas tu as une erreur car le type n'est pas complet.
Dans le second cas, tu as une definition d'une variable de type pointeur
vers pointeur vers char.
leo42 a écrit : Biensur que si...
|
Dans le cadre de la liste des arguments d'une fonction, le niveau superieur
de tableau est designe en fait un pointeur. Il n'y a pas de difference
avec
Code :
|
Glock 17Pro a écrit : autrement la différence , est que dans t'as première forme, il y a une notion de const |
Il n'y a pas de const qui intervienne ici.
Marsh Posté le 24-07-2009 à 11:14:06
Au lieu de créer un topic je demande ici. Je n'arrive pas à comprendre quel est l'utilité d'utiliser l'adresse mémoire d'une variable (le pointeur si l'ai bien compris) au lieu d'utiliser directement la variable.
Ca change quoi dans le code ?
Marsh Posté le 24-07-2009 à 11:28:58
Ecoute Binky :
http://www.cs.stanford.edu/cslibrary/PointerFunCpp.avi
Marsh Posté le 05-07-2009 à 03:19:59
Hello,
Je voudrai savoir la différence (s'il y en a une), entre:
et
Merci!