une petite question sur les pointeurs
Bon je suis totalement débutant en C, j'arrive au chapitre des pointeurs et malgré mes recherches, je ne comprends pas tout
Dans tous les exemples que j'ai lus, quand on veut déclarer un pointeur sur un entier (par exemple), on fait :
et si j'ai bien compris
var est une adresse
*var est le contenu à l'adresse var
C'est ce que me dis tout le monde et tous les bouquins. Pour illustrer cet exemple, je me suis fait un petit prog :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
#include <stdio.h>
int main(void) {
int* b;
b = 10;
b++;
printf("Voici les valeurs de a et b : %i", b);
return 0 ;
} |
Là, je me suis dit que b ne vaudrait pas 11 au final, et j'ai bien eu raison car 14 (en fait 10 + 4 puisqu'on a décalé le pointeur de 4 octets).
Eh ben, là où je ne comprends pas c'est lorsque je fait :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
#include <stdio.h>
int main(void) {
int* b;
*b = 10;
printf("Voici les valeurs de a et b : %i", b);
return 0 ;
} |
Le compilateur ne dis rien et compile normalement, et à l'execution, le prog plante en me mettant le contenu des différents registres du processeur. Pourtant les bouquins disent que *b = 10 fonctionne, et bah moi pas et je pige pas...:(
Merci d'avance