char * als Referenz in C

7

Wie übergebe ich den param like char * als Referenz?

Meine Funktion verwendet malloc ()

%Vor%     
deem 11.04.2012, 13:49
quelle

6 Antworten

17

Sie übergeben die Adresse des Zeigers:

%Vor%     
MByD 11.04.2012, 13:50
quelle
5

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.

    
Some programmer dude 11.04.2012 13:51
quelle
4

C unterstützt nicht die Weitergabe als Referenz. Sie können jedoch einen Zeiger an Ihren Zeiger übergeben und Folgendes festlegen:

%Vor%     
nos 11.04.2012 13:51
quelle
3

Sie übergeben einen Zeiger an einen Zeiger, char** : In C sind keine Referenzen vorhanden.

%Vor%

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:

%Vor%     
hmjd 11.04.2012 13:51
quelle
1

C ist Vorbeifahrwert. Es gibt kein Pass-by-Reference.

    
Joni 11.04.2012 13:50
quelle
-1

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.

    
ouah 11.04.2012 13:53
quelle

Tags und Links