Ich habe versucht, ein wenig mit Zeiger für einen bestimmten Wert von 'i' zu spielen und was ich herausgefunden habe, dass zwei verschiedene Adressen für die Deklaration% u und% lu,% llu zugewiesen sind. Wie ist möglich, dass eine Variable zwei verschiedene Adressen auf der gleichen Instanz der Ausführung haben kann -Wie kann eine Variable zwei verschiedene Adressen zum selben Zeitpunkt haben?
#include <stdio.h>
int main(void)
{
int i;
float f;
printf("\nEnter an integer:\t");
scanf("%d",&i);
printf("\nValue of address of i=%u",&i);
printf("\nvalue of address of i=%d",&i);
printf("\nValue of address of i=%lu",&i);
printf("\nValue of address of i=%llu",&i);
printf("\nvalue of i=%d",i);
printf("\nvalue of i=%u",i);
printf("\nvalue of i=%lu",i);
printf("\nvalue of i=%llu\n",i);
}
Dies ist die Ausgabe -
[email protected]:~/Desktop/Daily programs/pointers$ ./pointer001
Enter an integer: 12
Value of address of i=1193639268
value of address of i=1193639268
Value of address of i=140725797092708
Value of address of i=140725797092708
value of i=12
value of i=12
value of i=12
value of i=12
Hier können wir deutlich sehen, dass für% u und% d die Adresse ist 1193639268 (obwohl die Ausgabe von% d und% u möglicherweise nicht in allen Fällen gleich ist) und die Ausgabe von% lu und% llu ist 140725797092708 und was ist ihre physische Bedeutung.
Detail: Der richtige Formatbezeichner zum Drucken eines 'void *' -Zeichens ist '"% p "'. '"% p "' funktioniert möglicherweise nicht für ein 'int *', aber üblich. – chux
@chux Guter Punkt. Ich habe dieses Detail hinzugefügt – dbush