CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C] question à propos des pointeurs

[S]haka-Ponche
[S]haka-Ponche
Niveau 10
16 novembre 2013 à 22:30:32

salut!

si je comprends bien un pointeur donne l'adresse d'une variable.
mais quand je demande de faire apparaître l'adresse d'une variable ça me met un truc bizarre avec des chiffre (ok pas de problème pour ça) et des lettres (c'est ça que je comprend pas).
par exemple je rentre ça:

int age = 10;
int *pointeurSurAge = &age;

printf("%d", pointeurSurAge);

et ça me donne ça : 0xbf939148 et à chaque fois que je lance le programme ça change :(

quelqu'un pour m'expliquer svp?

[S]haka-Ponche
[S]haka-Ponche
Niveau 10
16 novembre 2013 à 22:32:20

euh ça plutôt

int age;
printf("entrez votre âge : ");
scanf("%d", &age);
int *pointeurAge = &age;
printf("votre âge est : %d\n", age);
printf("l'adresse de votre âge est : %p\n", &age);
return 0;

Geuks
Geuks
Niveau 3
16 novembre 2013 à 22:46:50

Bonsoir,
Je comprend pas votre question ?
Et puis dans votre code, le pointeur ne sert à rien, vue que dans le printf tu demande &age.
Le fait qu'il y ai des lettres est normal, vue que l'adresse est écrit en Hexadecimal ( http://fr.wikipedia.org/wiki/Syst%C3%A8me_hexad%C3%A9cimal ).

[S]haka-Ponche
[S]haka-Ponche
Niveau 10
16 novembre 2013 à 22:50:55

et comment il faut faire pour avoir l'adresse pas écrit en hexadecimal?

Geuks
Geuks
Niveau 3
16 novembre 2013 à 22:59:57

En faite tu utilise le %p, en gros quand tu fais ton printf, tu affiche l'adresse de la variable pointer par &age, et la variable est pointeurAge, en gros tu affiche en Hexa, pointeurAge, si tu veux afficher l'adresse de age tous simplement tu fais :
printf("l'adresse de votre âge est : %d\n", &age);

Geuks
Geuks
Niveau 3
16 novembre 2013 à 23:03:55

Et surtout déclare tes variables toujours au début de ton programme ( je crois que en plus sa fait partie des normes en C ).

[S]haka-Ponche
[S]haka-Ponche
Niveau 10
16 novembre 2013 à 23:08:46

int age;
printf("entrez votre âge : ");
scanf("%d", &age);
printf("votre âge est : %d\n", age);
printf("l'adresse de votre âge est : %d\n", &age); (erreur ici)
return 0;

quand je fais ça ça me dit qu'il y a un problème là ou j'ai indiqué, je réfléchis mais je comprends pas ce qui cloche :(

attention : format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat]|

Geuks
Geuks
Niveau 3
16 novembre 2013 à 23:13:16
  1. include <stdio.h>
  2. include <stdlib.h>

int main()
{
int age;
printf("entrez votre âge : ");
scanf("%d", &age);
printf("votre âge est : %d\n", age);
printf("l'adresse de votre âge est : %d\n", &age);
return 0;
}

Voici le code que j'ai utiliser, moi ça fonctionne.

[S]haka-Ponche
[S]haka-Ponche
Niveau 10
16 novembre 2013 à 23:14:55

j'ai copié collé le programme mais ça m'affiche toujours un problème au même endroit :(

l'IDE qui bug? (j'utilise Code::Blocks)

Geuks
Geuks
Niveau 3
16 novembre 2013 à 23:24:31

C'est un problème dans les options de compilation. Y'a plus d'infos ici , http://gcc.gnu.org/onlineedocs/gcc/Warning-Options.html
Normalement ça t'affiche sois correctement comme moi, ( sois un warning ) mais si sa t'affiche une erreur, tu peux remplacer le %d par un %u. Oui sa vient de l'IDE, pourtant j'utilise le même que toi.

TaMereLaCatin
TaMereLaCatin
Niveau 9
16 novembre 2013 à 23:30:44

Faut que fasses un cast :

Copie colle ce code ça devrait marcher :

  1. include <stdio.h>
  2. include <stdlib.h>

int main()
{
int age = 0;
printf("entrez votre age : ");
scanf("%d", &age);

printf("votre age est : %d\n", age);
printf("l'adresse de votre age est : %d\n", (int) &age);

return EXIT_SUCCESS;
}

[S]haka-Ponche
[S]haka-Ponche
Niveau 10
16 novembre 2013 à 23:30:49

même en remplaçant pas %u ça marche pas :(

tu connais une autre IDE sous linux stp?

[S]haka-Ponche
[S]haka-Ponche
Niveau 10
16 novembre 2013 à 23:32:44

tamere, le deboggeur n'affiche aucune erreur mais l'adresse affiche un nombre négatif, normal?

TaMereLaCatin
TaMereLaCatin
Niveau 9
16 novembre 2013 à 23:35:53

Moi il m'affiche toujours un nombre positif.

J'utilise pas CB, j'utilise la console à la place(mais c'est pareil normalement).

remplace (int) par (void *) et remplace %d par %p et dis moi ce que ça donne.

[S]haka-Ponche
[S]haka-Ponche
Niveau 10
16 novembre 2013 à 23:40:33

bah ça marche mais l'adresse est encore écrite en hexadecimal :(

c'est moi qui n'y arrive pas ou c'est le logiciel? si c'est Code::Blocks qui bug vous en connaissez une autre sous linux histoire de tester svp?

[S]haka-Ponche
[S]haka-Ponche
Niveau 10
16 novembre 2013 à 23:43:46

yeah ça fonctionne! j'ai pris le programme de tamere, j'ai juste remplacé %d par %u et c'est bon :)

merci les gars (ou les filles) :-)

TaMereLaCatin
TaMereLaCatin
Niveau 9
16 novembre 2013 à 23:45:31

Ahhnnn t'es sous linux c'est ptêt pour ça le nombre "négatif"
bah sous linux je connais pas trop, mais bon, c'est pas l'IDE qui fait qu'un code marchera d'une manière ou non, c'est le compilateur.

Et là on parle de chose standard donc tu pourras changer autant que tu veux d'IDE ou de compilateur, tu devrais normalement trouver le même résultat.

Et pis entre nous, les programmeurs utilisent l'hexa beaucoup plus souvent que le décimal car plus proche du binaire.
A quoi ça va te servir d'avoir l'adresse en base de 10 plutôt qu'en hexa ?

Geuks
Geuks
Niveau 3
16 novembre 2013 à 23:47:41

Parfois faut un mélange de deux personnes xD,
en tout cas ravis de t'avoir aidé vue que je suis débutant moi même, mais après avoir tester le C et ensuite être passer en C++ je trouve le C++ vraiment plus simple ^^. Si ta besoin d'aide tu peux toujours me contacter, et pourquoi pas échanger nos skype.

[S]haka-Ponche
[S]haka-Ponche
Niveau 10
16 novembre 2013 à 23:49:13

c'est pas que ça me sert, c'est juste que je j'apprends le C et vu que ça pourrait me servir apparemment alors je trouvais ça bête de pas l'apprendre et passer à côté :)

[S]haka-Ponche
[S]haka-Ponche
Niveau 10
16 novembre 2013 à 23:50:36

geuks, ok merci! j'y penserai quand j'aurai besoin d'aide ^^

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment