Envoyé par
laclac
Je débute un peu en C/C++
Il n'y a pas de C/C++. Il y a C et il y a C++. Ce sont deux langages différents. Comme tu es sur le forum C, je considère que tu codes en C.
1 2 3 4 5
|
int main(void)
{
int* ptr; /* déclare le ptr */
*ptr = 1; /* Le pointeur pointe sur 1 */ |
Stop Comportement indéfini. ptr n'est pas initialisé. Sa valeur est donc indéterminée. *ptr invoque donc un comportement indéfini. Tout peut arriver. C'est un bug grave dont l'effet n'est pas forcément visible (ce qui le rend sournois et donc très dangereux).
Seconde question :si je fais ptr + 3 de combien d'octet mon pointeur avance ?
Ca dépend de l'implémentation. On ne raisonne pas en terme d'octets, mais de taille de type. Ici, c'est un int, donc la progression est de sizeof (int) * 3, ce qui donne un certain nombres de bytes.
Rappel : un byte (la plus petite unité mémoire adressable d'une architecture donnée) n'a pas forcément la taille d'un octet, qui lui, fait exactement 8-bit. Il peut être plus grand. Tout dépend de l'architecture...
Partager