Veoma jednostavno, tvoja
printf() funkcija štampa vrednost
&b, koja ne predstavlja vrednost
b već memorijsku lokaciju gde je podatak smešten.
Da konfuzija bude veća, prilikom štampe naterao si
printf() da eksplicitno kastuje izlaz od
&b u float čime bi trebalo da kao rezultat dobiješ veoma čudne brojeve ili ako je kompajler tako podešen, nule.
Ispravan kod bi izgledao ovako.
Kod:
#include <stdio.h>
int main() {
double b = 3.45667;
// Stampa vrednost b.
printf("Vrednost b: %f\n", b);
// Stampa lokaciju u memoriji (pokazivac) gde se b nalazi.
printf("Adresa za b: %p\n", &b);
return 0;
}
Dakle, zapamti, kada štampaš proste podatke ne želiš da koristiš operator
& već direktno njihove nazive.