Incrémenter des pointeurs????
seljazou
Messages postés
185
Statut
Membre
-
loupius Messages postés 789 Statut Membre -
loupius Messages postés 789 Statut Membre -
Bonjour,
J'ai cherché sur plusieurs sites, à propos de pointeurs, leur incrémentation..... voila ma déduction, mais je ne crois pas que ça soit juste. Je sens qu'il y a une faille.
soit p pointeur qui pointe sur un TYPE.
p est l'adresse de *p. l'adresse suivante est p+1 qui est en réalité égale à p + sizeof(TYPE).
et si on affiche les valeurs de p et de p+1 et de p+sizeof(TYPE), trouverons les deux premiers successifs, et les deux derniers égaux???
c juste???
merci pour votre attention.
J'ai cherché sur plusieurs sites, à propos de pointeurs, leur incrémentation..... voila ma déduction, mais je ne crois pas que ça soit juste. Je sens qu'il y a une faille.
soit p pointeur qui pointe sur un TYPE.
p est l'adresse de *p. l'adresse suivante est p+1 qui est en réalité égale à p + sizeof(TYPE).
et si on affiche les valeurs de p et de p+1 et de p+sizeof(TYPE), trouverons les deux premiers successifs, et les deux derniers égaux???
c juste???
merci pour votre attention.
A voir également:
- Incrémenter des pointeurs????
- Pointeurs satellites - Forum TNT / Satellite / Réception
- Étendre une formule excel sans incrémenter - Forum Excel
- Copier formule excel sans incrémenter ✓ - Forum Bureautique
- Recopier sans incrémenter tous les chiffres ✓ - Forum Excel
- Manipulation des pointeurs - Forum C
3 réponses
Hello
ça dépend de tes options de compilation. parce que c'est un sujet sensible : les débutants se plantent systématiquement alors que les pisseurs de code s'en servent sans s'en rendre compte
avec du typage (*p)++ pointe le p suivant alors que sans ça pointe l'octet suivant
ça dépend de tes options de compilation. parce que c'est un sujet sensible : les débutants se plantent systématiquement alors que les pisseurs de code s'en servent sans s'en rendre compte
avec du typage (*p)++ pointe le p suivant alors que sans ça pointe l'octet suivant
#include<stdio.h>
int main (){
char aa, *a = &aa;
int bb, *b = &bb;
double cc, *c=&cc;
//ici on constate bien la différence. le +1 ajoute juste l'espace d'un char.
printf("%d %d %d\n", a, a+1, a+sizeof(char));
printf("%d %d %d\n", b, b+1, b+sizeof(int));
printf("%d %d %d\n", c, c+1, c+sizeof(double));
a++;b++;c++;
// de même, incrémenter avec ++ fait bien la même chose que +1
printf("%d\n", a);
printf("%d\n", b);
printf("%d\n", c);
getchar();
}
ce programme montre la différence. Par contre ça m'étonne que ça dépende des options de compilation ! Ce n'est pas dit dans la norme ?
//ici on constate bien la différence. le +1 ajoute juste l'espace d'un char.
Ok, pour le cas du pointeur 'a', mais pas pour les autres.
Si on suppose que 'b' pointeur de type 'int' vaut 1224, alors l'instruction
printf("%p %p %p\n", b, b+1, b+sizeof(int));
donnera, en supposant qu'un entier 'int' est sur 4 octets:
1224 1228 1234
Nota: l'affichage des pointeurs se fait par '%p'.
Quant aux options de compilation modifiant l'arithmétique des pointeurs, j'ai aussi de gros doutes.
Bonne nuit.
Ok, pour le cas du pointeur 'a', mais pas pour les autres.
Si on suppose que 'b' pointeur de type 'int' vaut 1224, alors l'instruction
printf("%p %p %p\n", b, b+1, b+sizeof(int));
donnera, en supposant qu'un entier 'int' est sur 4 octets:
1224 1228 1234
Nota: l'affichage des pointeurs se fait par '%p'.
Quant aux options de compilation modifiant l'arithmétique des pointeurs, j'ai aussi de gros doutes.
Bonne nuit.