pour voir s'il est arrivé un évènement important.
5h30 du mat toujours là à lire des topics sans intérêt.
Le 28 février 2021 à 23:12:47 alcuin a écrit :
Le 28 février 2021 à 23:11:55 JencuIeTesMorts a écrit :
Le 28 février 2021 à 23:10:18 alcuin a écrit :
Le 28 février 2021 à 23:06:58 JencuIeTesMorts a écrit :
Je suis l'OP, j'ai été banni sur mon premier compteLe 28 février 2021 à 23:00:36 NNeguev a écrit :
Tu devrais poser la question dans le forum programmation, l’admin est chaud sur ça.Sinon c’est qu’un pointeur pointé sur un acces mémoire donc à une pièce dans sa globalité et non à un simple octet.
Donc si tous les int sont codés sur 4 bits alors ton pointeur te redirige vers ces 4 bits. Et si tu l’incrémentes c’est 4 suivantsDonc si j'ai bien compris :
printf(sizeof(struct a)); // donne 10
struct a* variable = malloc(sizeof(struct a));
printf("%p", variable) // si ici ça donne 1000
variable++;
printf("%p", variable) // ici ça donnera 1010C'est ça ?
Il a du sens ton code c'est bien ce qui s'affiche ? L'adresse est 1000, du coup le pointeur suivant va vers 1010 puisqu'il saute la taille d'une structure 10.
J'ai pas testé en fait, je t'avoue que maintenant que j'ai bien formulé ma question je pourrais verifier ça en 30 secondes
Yes. Ben moi je te laisse, je ne saurai pas t'aider plus. Mais je pense que tu tiens le bon bout et oui, faut faire des tests
J'ai testé et c'est bel et bien ça, quand tu fais :
pointeur += i;
il fait "en réalité"
pointeur += i *sizeof(typeDuPointeur);
merci pour l'aide
Le 28 février 2021 à 23:10:18 alcuin a écrit :
Le 28 février 2021 à 23:06:58 JencuIeTesMorts a écrit :
Je suis l'OP, j'ai été banni sur mon premier compteLe 28 février 2021 à 23:00:36 NNeguev a écrit :
Tu devrais poser la question dans le forum programmation, l’admin est chaud sur ça.Sinon c’est qu’un pointeur pointé sur un acces mémoire donc à une pièce dans sa globalité et non à un simple octet.
Donc si tous les int sont codés sur 4 bits alors ton pointeur te redirige vers ces 4 bits. Et si tu l’incrémentes c’est 4 suivantsDonc si j'ai bien compris :
printf(sizeof(struct a)); // donne 10
struct a* variable = malloc(sizeof(struct a));
printf("%p", variable) // si ici ça donne 1000
variable++;
printf("%p", variable) // ici ça donnera 1010C'est ça ?
Il a du sens ton code c'est bien ce qui s'affiche ? L'adresse est 1000, du coup le pointeur suivant va vers 1010 puisqu'il saute la taille d'une structure 10.
J'ai pas testé en fait, je t'avoue que maintenant que j'ai bien formulé ma question je pourrais verifier ça en 30 secondes
Le 28 février 2021 à 23:07:11 alcuin a écrit :
Mais ouais, comme dit Néguev : un int* pointe vers une zone mémoire nécessaire pour un int (2 octets ?) Un struct * vers une zone mémoire sizeof(struct)
Ca je le savais, ce que je comprends pas c'est comme tu dis l'arithmétique des pointeurs, c'est à dire si quand tu adicione 1 à un pointeur ça adicionne vraiment 1 ou bien si il adapte cette addition en fonction du type du pointeur.
Je suis l'OP, j'ai été banni sur mon premier compte
Le 28 février 2021 à 23:00:36 NNeguev a écrit :
Tu devrais poser la question dans le forum programmation, l’admin est chaud sur ça.Sinon c’est qu’un pointeur pointé sur un acces mémoire donc à une pièce dans sa globalité et non à un simple octet.
Donc si tous les int sont codés sur 4 bits alors ton pointeur te redirige vers ces 4 bits. Et si tu l’incrémentes c’est 4 suivants
Donc si j'ai bien compris :
printf(sizeof(struct a)); // donne 10
struct a* variable = malloc(sizeof(struct a));
printf("%p", variable) // si ici ça donne 1000
variable++;
printf("%p", variable) // ici ça donnera 1010
C'est ça ?