Wie Hochsprachen wie Python und JavaScript kann PHP auch erweiterte Funktionen über C/C++ schreiben. Hier erfahren Sie, wie Sie eine einfache PHP-Erweiterung erstellen und eine DLL-Bibliothek eines Drittanbieters aufrufen.
C-Sprachzeiger
Zeiger haben mich tausende Male gequält. Ich war sehr verwirrt, als ich anfing, Zeiger zu lernen Dieses Zeigerwissen dient als Mittelsmann. Aus Sicht des Speichers ist die Adresse des Zeigerraums, der zum Speichern von Daten verwendet wird.
#include<stdio.h>void add_1(int num) { num++; } void add_2(int *num) { (*num)++; }int main() { int number1 = 1,number2 = 1 ; add_1(number1); add_2(&number2); printf("%d\n",number1); printf("%d\n",number2); return 0; }
Der Wert von Nummer1 bleibt unverändert, Nummer2 erhöht sich um 1 und die Parameter werden in add_1 übergeben () Dies entspricht dem Öffnen eines Leerzeichens und dem Kopieren des Werts von Nummer1 in dieses Leerzeichen . Alle am kopierten Wert ausgeführten Vorgänge haben keine Auswirkungen auf die Originaldaten. Die in add_2() übergebenen Parameter sind , um einen Platz zum Speichern der Adresse von Nummer2 zu öffnen. Alle Operationen auf Nummer sind gleich den Operationen auf Nummer2.
C++-Zitat
Der folgende Code ist fast der gleiche wie der obige Code, nur einige Symbole wurden geändert, aber der Effekt ist der gleiche.
#include<iostream>using namespace std;void add_1(int num) { num++; }void add_2(int &num) { num++; }int main() { int number1 = 0, number2 = 0; add_1(number1); add_2(number2); cout << number1 << " " << number2 << endl; return 0; }
Die C++-Referenz gibt Nummer2 einen Alias . Die Speicheradresse von Nummer2 wird tatsächlich im Speicher gespeichert, aber der Compiler hat einige Optimierungen vorgenommen . Und Einschränkungen bestehen, soweit ich Informatik verstehe, darin, dass unterschiedliche Arten der Organisation zu unterschiedlichen Computerarchitekturen führen.
3. C++-Referenz als Rückgabewert
#include<iostream>using namespace std;int n = 3;int& func() { return n; }int main() { int num; num = func(); cout<<num <<endl; return 0; }
Die Funktion gibt einen impliziten Zeiger auf n zurück, aber das Objekt, auf das verwiesen werden muss, darf den Gültigkeitsbereich, also die Variable, nicht überschreiten wirkt auf Innerhalb des Funktionskörpers können globale Variablen wie die oben genannten referenziert werden, jedoch nicht, wenn sie innerhalb der Funktion func platziert werden.
4. Einige Unterschiede zwischen C++-Referenzen und Zeigern
Zeiger können Nullzeiger sein, Referenzen müssen jedoch auf einen zulässigen Adressraum verweisen.
Ein Zeiger kann von einem Objekt auf ein anderes zeigen, aber ein Verweis auf ein Objekt kann nach der Initialisierung nicht mehr geändert werden.
Zeiger können jederzeit initialisiert werden, Referenzen müssen jedoch zum Zeitpunkt der Erstellung initialisiert werden.
Verwandte Empfehlungen:
PHP-Erweiterung mit C/C++ schreiben
Betrachtung von C durch statische lokale Variablen , Funktionen von C++, C#, Java, PHP
Das obige ist der detaillierte Inhalt vonEinführung in C++-Referenzen und -Zeiger. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!