Zeiger in einer Funktion in der Programmiersprache C wechseln

7

Wie wechseln Sie Zeiger in einer Funktion?

%Vor%     
Chris_45 28.12.2009, 16:54
quelle

7 Antworten

14

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%     
Prasoon Saurav 28.12.2009, 16:59
quelle
13

Sie benötigen einen Zeiger auf den Zeiger.

%Vor%     
Mak Kolybabi 28.12.2009 16:58
quelle
5

Ä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%     
Drew Dormann 28.12.2009 16:57
quelle
2

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.

    
DVK 28.12.2009 16:58
quelle
2

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.

    
itscaleb 28.12.2009 17:36
quelle
1

Wenn Sie die Zeiger wechseln möchten, müssen Sie die Adressen der Zeiger anstelle der Zeigerwerte übergeben:

%Vor%     
Steve Emmerson 28.12.2009 16:58
quelle
1

Bitte lesen Sie hier für eine weitere ähnliche Frage, wie beschrieben. Sobald Sie dies gelesen haben, wird es Ihnen leichter machen, andere Antworten oben zu verstehen.

Hoffe, das hilft, Freundliche Grüße, Tom.

    
t0mm13b 28.12.2009 17:43
quelle

Tags und Links