In C werden Parameter immer mit Werten übergeben. Obwohl Sie die Werte der Zeigervariablen innerhalb der aufgerufenen Funktion ändern, werden die Änderungen nicht an die aufrufende Funktion zurückgegeben. Versuchen Sie Folgendes:
%Vor%Entsprechender Aufruf von main () sollte lauten:
%Vor%Ändern Sie die Signatur, um einen Zeiger auf einen Zeiger zu setzen.
%Vor%Wenn Sie möchten, dass der aufrufende Code identisch aussieht und C ++ - Referenzen ähnelt, verwenden Sie ein Makro.
%Vor%Sie ändern die lokalen Werte des Zeigers innerhalb der Funktion - sobald sie beendet werden, bleiben diese Änderungen bestehen. Wenn Sie die Werte ändern möchten, auf die die Zeiger zeigen, möchten Sie:
%Vor%Wenn Sie die Werte der Zeiger selbst ändern möchten (z. B. die Adressen), müssen Sie die Zeiger auf diese Zeiger übergeben, nicht die Zeiger selbst.
Zusätzlich zu all diesen Antworten wollte ich nur hinzufügen, dass ich, wenn ich Probleme hatte, Zeiger in einer Situation wie dieser zu verstehen, sie auf etwas einfacheres wie ein int reduzieren würde. Sagen Sie, wenn Sie ein int an eine Funktion übergeben:
%Vor%x wird offensichtlich immer noch drucken 10. Um x tatsächlich zu ändern, müssten Sie einen Zeiger an x übergeben, so dass Sie x direkt ändern können.
%Vor%Jetzt wird x gedruckt 20. Nun wenden Sie die gleiche Argumentation an, als wäre x ein Zeiger, dann müssen Sie einen Doppelzeiger übergeben. Hoffe, das hilft.
Wenn Sie die Zeiger wechseln möchten, müssen Sie die Adressen der Zeiger anstelle der Zeigerwerte übergeben:
%Vor%