Bonjour,
Quand on écrit, ça signifie quoi et es ce que l'écriture est correcte ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 int *p; p = 12;
Bonjour,
Quand on écrit, ça signifie quoi et es ce que l'écriture est correcte ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 int *p; p = 12;
cela signifie que l'on déclare un pointeur d'entier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part int *p
Cela ne compile pas -> il faut mettre ; à la fin.
Ce pointeur n'étant pas initialisé il pointe à priori n'importe où.
Là, le pointeur pointe à l'adresse 12... je doute que cela corresponde à votre besoin...
Code : Sélectionner tout - Visualiser dans une fenêtre à part p = 12;
Merci la réponse.Envoyé par Bayard
j'en ai pas besoin, c'est juste pour comprendre.
j'ai corrigé le ";"
12 c'est pas une adresse ? ou c'est l'adresse de l'entier 12 ?
A la compilation : test.c:27: attention : assignment makes pointer from integer without a cast
12 est une expression constante. Elle n'a pas d'adresse. C'est un entier de type int.Envoyé par oranoutan
D'autre part, un pointeur est une variable conçue pour recevoir une valeur de type adresse du type défini :
ici, int.
Code : Sélectionner tout - Visualiser dans une fenêtre à part int *p;
signifie que tu cherches à assigner une valeur de type int à une variable qui attend l'adresse d'un entier. C'est incohérent et le compilateur le signale :
Code : Sélectionner tout - Visualiser dans une fenêtre à part p = 12;
"Attention, l'assignation transforme un entier en pointeur (adresse) sans conversion explicite."
Code : Sélectionner tout - Visualiser dans une fenêtre à part test.c:27: attention : assignment makes pointer from integer without a cast
Il est en effet techniquement possible si on sait ce qu'on fait, de convertir un entier en adresse à l'aide d'un opérateur de conversion de type (typecast ou cast)
Mais il faut que l'adresse 12 ait un sens sur la machine donnée, ce qui n'est évidemment nullement garanti (comportement dépendant de l'implémentation).
Code : Sélectionner tout - Visualiser dans une fenêtre à part p = (int *) 12;
Bonjour,
Encore une ptite question, lequel affiche l'adresse de p, car tout 2 renvoies des valeurs différentes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 int *i,j; j=12; i=&j; printf("%p", i); printf("\n%p", &i);
Partager