Sie nicht Platz für Ihre int
zugewiesen haben, haben Sie erklärt nur einen Zeiger zu einem int
.
Der Zeiger ist nicht initialisiert und daher ist das Schreiben in diesen unbekannten Speicherbereich ein nicht definiertes Verhalten und führt zu Problemen. Dies führt normalerweise zu einem Segmentfehler.
Sie können einen Steckplatz für eine ganze Zahl zuweisen malloc
mit:
n = malloc(sizeof(int));
und einen entsprechenden Aufruf an free
verwenden, um später den Speicher freizugeben:
free(n);
Aber einen Steckplatz für eine Zuweisung Ganzzahl ist ziemlich ungewöhnlich, normalerweise würden Sie die int
auf dem Stapel zuweisen:
int n;
n = 20;
'n' ist ein nicht initialisierten Zeiger Wert, den Sie in der Zeile ‚sind dereferencing * n = 20 ". Wenn Sie einen Zeiger verwenden möchten, müssen Sie sicherstellen, dass Sie ihn so initialisieren, dass er auf einen gültigen Speicherort verweist, bevor Sie versuchen, ihn zu dereferenzieren. – reuben
Alternativ zu den bereits gegebenen Antworten könnten Sie einfach "int n = 20" und "& n" (die Adresse von n) übergeben, an die Funktionen, die "int *" als Parameter benötigen. – Vassilis