Heim > Java > javaLernprogramm > Einführung in C++-Referenzen und -Zeiger

Einführung in C++-Referenzen und -Zeiger

坏嘻嘻
Freigeben: 2018-09-14 17:06:07
Original
1778 Leute haben es durchsucht

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.

  1. 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;
}
Nach dem Login kopieren


Einführung in C++-Referenzen und -Zeiger

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.

  1. 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;
}
Nach dem Login kopieren

Einführung in C++-Referenzen und -ZeigerDie 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;
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage