Sie müssen es als Zeiger auf den Zeiger übergeben:
%Vor%Nennen Sie es so:
%Vor% Beachten Sie, dass ich den malloc
-Aufruf so geändert habe, dass er fünf Zeichen zuweist, weil Sie nur die tatsächlichen Zeichen zuordnen, aber eine Zeichenfolge auch ein spezielles Abschlusszeichen enthält und Sie auch dafür Platz benötigen.
Ich verwende auch strcpy
, um die Zeichenfolge in den zugewiesenen Speicher zu kopieren. Das liegt daran, dass Sie den Zeiger sonst überschreiben, was bedeutet, dass Sie den zugewiesenen Zeiger verlieren und einen Speicherverlust haben.
Sie sollten auch daran denken, free
den Zeiger, wenn Sie damit fertig sind, oder der Speicher bleibt reserviert, bis das Programm endet.
Sie übergeben einen Zeiger an einen Zeiger, char**
: In C sind keine Referenzen vorhanden.
Beachten Sie Folgendes:
%Vor% kopiert "test"
nicht in buf
, sondern points buf
auf die Adresse des String-Literals "test"
. Zum Kopieren benutzen Sie strcpy()
.
Denken Sie daran, dass free()
den Puffer zurückgegeben hat, wenn er nicht mehr benötigt wird:
C kann Funktionsargumente nicht als Referenz übergeben, C übergibt sie immer als Wert.
Von Kernighan & amp; Ritchie:
(K & amp; R 2., 1.8 Aufruf nach Wert) "In C werden alle Funktionsargumente von" value ""
übergeben
Um einen Zeiger auf T
zu ändern, können Sie einen Zeiger auf den Zeiger auf T
als Funktionsargumenttyp haben.
Tags und Links c