Zeiger Argument durch Verweis unter C übergeben?

8
%Vor%

gcc würde diese Datei nicht kompilieren, aber nach dem Hinzufügen von #include <cstring> könnte ich g ++ verwenden, um diese Quelldatei zu kompilieren.

Das Problem ist: Unterstützt die C-Programmiersprache die Übergabe von Zeigerargumenten durch Referenz? Wenn nicht, warum?

Danke.

    
Jichao 01.12.2009, 12:11
quelle

6 Antworten

29

Nein, C unterstützt keine Referenzen. Es ist von Entwurf. Anstelle von Verweisen können Sie Zeiger auf Zeiger in C verwenden. Verweise sind nur in C ++ - Sprache verfügbar.

    
Kirill V. Lyadvinsky 01.12.2009, 12:13
quelle
20

Verweise sind eine Funktion von C ++, während C nur Zeiger unterstützt. Wenn Ihre Funktion den Wert des angegebenen Zeigers ändern soll, übergeben Sie den Zeiger an den Zeiger:

%Vor%     
Bojan Resnik 01.12.2009 12:20
quelle
5

Versuchen Sie Folgendes:

%Vor%     
PP. 01.12.2009 12:19
quelle
2

Dies sollte ein Kommentar sein, aber es ist zu lang für ein Kommentarfeld, also mache ich es CW.

Der von Ihnen bereitgestellte Code kann besser wie folgt geschrieben werden:

%Vor%     
Sinan Ünür 01.12.2009 21:58
quelle
1

Es gibt einen interessanten Trick in libgmp, der Verweise emuliert: typedef mpz_t __mpz_struct[1];

und dann kannst du so schreiben:

%Vor%

Ich würde nicht empfehlen, diese Methode zu verwenden, weil sie für andere unverständlich ist, sie schützt nicht davor, ein NULL zu sein: mpz_init((void *)NULL) , und sie ist ebenso ausführlich wie ihr Zeiger-zu-Zeiger-Gegenstück.

    
Dmytro Sirenko 31.07.2012 05:41
quelle
0

C lang hat keine Referenzvariablen, sondern seinen Teil von C ++ lang.

Der Grund für die Einführung der Referenz besteht darin, dass die Zeiger nicht baumeln und Vorprüfung auf Zeiger Nichtigkeit.

Sie können die Referenz als konstanten Zeiger betrachten, d. h. der const-Zeiger kann nur auf Daten zeigen, auf die er initialisiert wurde, um zu zeigen.

    
Ashish 01.12.2009 12:30
quelle

Tags und Links