Das %d
Formatbezeichner zu scanf
erwartet einen Zeiger auf ein int
, das heißt ein int *
, das ist, was Sie vorbei. Also rufst du die Funktion richtig an.
Wo Sie schief gegangen ist, dass der Zeiger x
wurde nie initialisiert und zeigt daher nirgends. scanf
versucht dann, diesen unitären Wert als Adresse zu lesen und anschließend zu lesen, was sich an dieser falschen Adresse befindet. Das Lesen eines nicht initialisierten Werts ruft undefined behavior auf.
Sie müssen x
Punkt irgendwo machen, entweder durch die Adresse eines int
Variablen zugewiesen wird oder durch malloc
mit dynamischen Speicher zuzuweisen.
int a;
int *x = &a;
Oder:
int *x = malloc(sizeof(int));
Bitte lesen Sie ein Anfänger-Level C Buch. Zunächst müssen Sie die Variable initialisieren ... – Lundin
Vielen Dank ... Ein Zeiger muss zuerst einen Wert haben ... Jetzt funktioniert es .. int a = 0; int * x = & a; scanf ("% d", x); printf ("% d", * x); – EarlyManX215