Comme les langages de haut niveau tels que Python et JavaScript, PHP peut également écrire des fonctions étendues via C/C++. Nous expliquons ici comment créer une extension PHP simple et comment appeler une bibliothèque DLL tierce.
pointeurs de langage c
Les pointeurs m'ont torturé des milliers de fois. Je suis tombé amoureux des pointeurs. J'étais très confus quand j'ai commencé à apprendre les pointeurs. cette connaissance du pointeur sert de Le rôle de l'intermédiaire, du point de vue de la mémoire, est l'adresse de l'espace du pointeur utilisé pour stocker les données.
#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; }
La valeur du numéro 1 reste inchangée, le numéro 2 augmente de 1, dans add_1() Passage paramètres équivaut à ouvrir un espace et à copier la valeur du numéro 1 dans cet espace . Toutes les opérations effectuées sur la valeur copiée n'ont aucun impact sur les données d'origine. Les paramètres passés dans add_2() sont pour ouvrir un espace pour stocker l'adresse du numéro2 Toutes les opérations sur num sont égales aux opérations sur numéro2.
Citation c++
Le code ci-dessous est presque le même que le code ci-dessus, seuls quelques symboles ont été modifiés, mais l'effet est le même.
#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; }
La référence c++ est donnant au numéro2 un alias , mais l'adresse mémoire du numéro2 est en fait stockée dans la mémoire, mais le compilateur a l'a changé. Certaines optimisations et limitations, tout comme ma compréhension de l'informatique, différentes manières d'organiser différentes architectures informatiques.
3. Référence C++ comme valeur de retour
#include<iostream>using namespace std;int n = 3;int& func() { return n; }int main() { int num; num = func(); cout<<num <<endl; return 0; }
La fonction renvoie un pointeur implicite vers n, mais l'objet qui doit être référencé ne doit pas dépasser la portée, ce qui signifie que la variable Les variables globales agissant dans le corps de cette fonction, comme ci-dessus, peuvent être référencées, mais pas si elles sont placées dans la fonction func.
4. Quelques différences entre les références C++ et les pointeurs
Les pointeurs peuvent être des pointeurs nuls, mais les références doivent pointer vers un espace d'adressage légal.
Un pointeur peut pointer d'un objet à un autre, mais une référence à un objet ne peut pas être modifiée une fois celui-ci initialisé.
Les pointeurs peuvent être initialisés à tout moment, mais les références doivent être initialisées au moment de la création.
Recommandations associées :
Écrire une extension PHP en utilisant C/C++
Examiner le C via des variables locales statiques , Fonctionnalités de C++, C#, Java, PHP
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!