"pointeur +1" pointe l'élément suivant ? - C - Programmation
Marsh Posté le 27-08-2005 à 19:15:32
euh ... non
Marsh Posté le 27-08-2005 à 19:15:55
Faut demander à Emmanuel, mais je pense pas, +1 ça va incrémenter le pointeur genre d'un octet unique, donc ça dépend de la taille des éléments de la structure...
Et je sais plus si tous les éléments d'une structure sont stockés de manière contigue
Marsh Posté le 27-08-2005 à 19:16:50
Non, il ingremente le pointeur de sizeof(PIXEL).
Donc apres p +=1, p pointera sur la prochaine structure PIXEL.
Marsh Posté le 27-08-2005 à 19:18:18
chagarou a écrit : Non, il ingremente le pointeur de sizeof(PIXEL). |
sûr?
(et il pointera sur ce qu'il y a juste après la structure PIXEL actuelle, c'est pas nécessairement une structure PIXEL )
Marsh Posté le 27-08-2005 à 19:18:50
masklinn a écrit : |
C'est exactement les questions que je me posais....
Bon, premier point les elements sont des OCTETS ce qui correspond au +1.
( donc question subsidière : comment faire si ce ne sont pas des octets)
Et pour ce qui est de la continuité, c'est vraiment un coup de bol si ca marche... avec une centaine d'elements, OK mais plus ????
Comment on fait pour obtenir le "pointeur suivant" ? fonction spéciale ?
Marsh Posté le 27-08-2005 à 19:19:06
pour tout pointeur p de type autre que void*, p + 1 pointe vers l'élément suivant dans un tableau (ou un vector en C++, mais c'est crade).
Par exemple :
[cpp]int* tab;
tab = new int[42];
int* p = &(tab[20]); // p pointe vers le 21e entier
p = p + 1; // p pointe vers le 22e entier
Ici tu semble avoir un tableau de PIXEL, donc c'est bon
Attention dans ta boucle tu commence à p + 1, je crois que t'as inversé les deux lignes.
Marsh Posté le 27-08-2005 à 19:19:23
masklinn a écrit : |
Puisque que la quote a changer, le commentaire aussi
Sodomiseur de diptère
Marsh Posté le 27-08-2005 à 19:19:25
chagarou a écrit : Non, il ingremente le pointeur de sizeof(PIXEL). |
j'ai des doute...
je sais que l'opérateur ++ le fait mais le += me laisse perplexe
Marsh Posté le 27-08-2005 à 19:19:53
chagarou a écrit : Non, il ingremente le pointeur de sizeof(PIXEL). |
Si ca avait été TABLEAU_HYPER_GROS
il aurai incrementé de sizeof(TABLEAU_HYPER_GROS) ???
Marsh Posté le 27-08-2005 à 19:20:10
oui
type* p;
p + 1 == "adresse p" + sizeof(type)
Marsh Posté le 27-08-2005 à 19:20:44
Tiens, va voir la page d'Emmanuel, tu trouveras sûrement tout ce qu'il te faut sur les structures et les pointeurs
Marsh Posté le 27-08-2005 à 20:08:21
NounouRs a écrit : c'est extrait d'un code C que j'ai retranscrit en C++, mais sur ce point la je doute
|
Le pointeur étant de type PIXEL, il sera augmenté de sizeof(PIXEL) à chaque tour. Autrement dit, si this->addr est l'adresse d'un tableau de PIXEL, on pointera sur chaque PIXEL en séquence (this->addr[0], this->addr[1] etc.)
L'arithmétique des pointeurs, c'est la base du C...
Marsh Posté le 27-08-2005 à 20:09:16
masklinn a écrit : Faut demander à Emmanuel, |
Je ne suis heureusement pas le seul à savoir répondre à ça...
Citation : +1 ça va incrémenter le pointeur genre d'un octet unique, |
Ben non... Ca va pointer à sizeof (T) bytes plus loin...
C'est le moment de relire son livre de C...
Marsh Posté le 27-08-2005 à 20:10:01
masklinn a écrit : sûr? |
Ca c'est un autre problème. Le C n'est pas protégé contre ça.
Marsh Posté le 27-08-2005 à 20:12:34
Emmanuel Delahaye a écrit : Je ne suis heureusement pas le seul à savoir répondre à ça... |
Oui mais vu tes connaissances peu ou prou encyclopédique en C, si tu réponds on est à peu près sûr que la réponse sera correcte, et que les corner case seront mentionnés
Marsh Posté le 27-08-2005 à 20:13:38
jesus_christ a écrit : pour tout pointeur p de type autre que void*, p + 1 pointe vers l'élément suivant dans un tableau |
Oui.
Citation :
|
Pas du C. Dommage...
Marsh Posté le 27-08-2005 à 20:14:52
KangOl a écrit : j'ai des doute... |
Et c'est quoi la différence entre p++ et p += 1 ?
Marsh Posté le 27-08-2005 à 20:16:17
NounouRs a écrit : Si ca avait été TABLEAU_HYPER_GROS |
Si tu veux dire TYPE_HYPER_GROS, ben oui.
Je ne comprends pas. Cette notion est élémentaire en C...
|
on voit bien que l'adresse augmente de 10 en 10 (hexa) :
|
Marsh Posté le 27-08-2005 à 20:26:21
Emmanuel Delahaye a écrit : Et c'est quoi la différence entre p++ et p += 1 ? |
p++ va créé un nouvel "objet"
p+=1 correspond plus à ++p ...
bon ok je chipote mais c'était pour avoir quelque chose à répondre
Marsh Posté le 27-08-2005 à 20:31:47
KangOl a écrit : p++ va créé un nouvel "objet" |
Quoi ? Quel nouvel objet ? La valeur du pointeur va être augmentée de la taille de l'objet, et il va donc pointer sur l'objet suivant (qu'il existe ou non n'est pas le problème du pointeur, qui peut pointer n'importe où). Il n'y a aucune 'création' d'objet. Je n'ai pas vu d'allocation mémoire.
Citation : p+=1 correspond plus à ++p ... |
p++, p+=1 et ++p sont strictement identiques (tant qu'ils sont utilisés seuls).
Marsh Posté le 27-08-2005 à 20:34:55
j'ai dit que c'etait pour chipoter
(et puis c'est vrai qu'en c le terme "objet" ne veux rien dire...)
Marsh Posté le 27-08-2005 à 20:38:10
KangOl a écrit : (et puis c'est vrai qu'en c le terme "objet" ne veux rien dire...) |
Si. Un objet, c'est un entitée qui a une adresse, une taille et une valeur. Ca s'appelle aussi une variable.
Marsh Posté le 27-08-2005 à 20:39:55
note pour moi meme : emmanuelle a toujours quelque chose a répondre (et toujours juste)
Marsh Posté le 27-08-2005 à 20:44:06
KangOl a écrit : note pour moi meme : emmanuelle a toujours quelque chose a répondre (et toujours juste) |
Tant qu'il y a des imprécisions ou des erreurs, oui. Par exemple, c'est Emmanuel et non emmanuelle... Rêve pas !
Marsh Posté le 27-08-2005 à 20:52:29
Marsh Posté le 28-08-2005 à 10:11:26
KangOl a écrit : j'ai dit que c'etait pour chipoter |
Ouais enfin là, tu aurais quand même mieux fait de te taire. On fait pas du Perl, là.
(et comme l'a fait remarquer ED, l'arithmétique des pointeurs, c'est la base en C)
Marsh Posté le 28-08-2005 à 19:17:14
Citation :
|
Pas du C. Dommage...
c'est vrai mais nounours a dit :
Citation : c'est extrait d'un code C que j'ai retranscrit en C++, mais sur ce point la je doute |
et dans son code il y a un this->adr qui a toutes les chances d'être du C++ même si ça pourrait être du C. Il aurait du poster ça dans la rubrique C++, comme ça Taz lui aurait dit que l'arithmétique de ptr c'est du C
Marsh Posté le 28-08-2005 à 19:22:08
masklinn a écrit : |
hé ben ca en raconte des conneries un expert
Marsh Posté le 28-08-2005 à 19:23:37
chrisbk a écrit : hé ben ca en raconte des conneries un expert |
Sauf que, contrairement à toi, chuis pas expert en C
Marsh Posté le 28-08-2005 à 19:25:49
masklinn a écrit : Sauf que, contrairement à toi, chuis pas expert en C |
c'est les bases ca, mon petit
Marsh Posté le 28-08-2005 à 19:30:09
chrisbk a écrit : c'est les bases ca, mon petit |
Emmanuel l'a déjà dit, s'mal de répéter
Marsh Posté le 28-08-2005 à 19:30:51
masklinn a écrit : Emmanuel l'a déjà dit, s'mal de répéter |
on ne le dira jamais assez, vil petit mangecaca
Marsh Posté le 28-08-2005 à 19:32:50
chrisbk a écrit : on ne le dira jamais assez, vil petit mangecaca |
Je ne mange jamais de kaka, c'est sale
Marsh Posté le 28-08-2005 à 19:35:14
masklinn a écrit : Je ne mange jamais de kaka, c'est sale |
Faut le laver avant avec du PQ ayant peu servi...
Marsh Posté le 28-08-2005 à 19:43:28
enfin emmanuel, ca va pas de faire de la pollution ainsi ?
Marsh Posté le 28-08-2005 à 19:44:30
Emmanuel Delahaye a écrit : Faut le laver avant avec du PQ ayant peu servi... |
ok
chrisbk a écrit : enfin emmanuel, ca va pas de faire de la pollution ainsi ? |
Ben non, tu manges le papier avec, tu laves ton caca, tu enveloppes le papier autour, et comme ça tu te met pas de caca sur les doigts
Marsh Posté le 28-08-2005 à 21:03:02
NounouRs a écrit : c'est extrait d'un code C que j'ai retranscrit en C++, mais sur ce point la je doute
|
Code :
|
en espérant de que ce sont de PIXEL des 2 côtés.
Marsh Posté le 27-08-2005 à 19:11:33
c'est extrait d'un code C que j'ai retranscrit en C++, mais sur ce point la je doute
Un pointeur auquel au fait p+1 est ce qu'il pointe sur l'element suivant dans la structure (structure PIXEL)