和Python,JavaScript等高階語言一樣,PHP也可以透過C/C 編寫擴充功能。這裡分享下如何建構一個簡單的PHP擴展,以及如何呼叫第三方DLL函式庫。
c語言指標
指針虐我千百遍,我代指針如初戀,剛開始學習指針時感到很迷惑,現在看來指針知識充當一個中間人的角色,從記憶體上看指標空間用來儲存資料的位址。
#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; }
#number1的值不變,number2增加了1,add_1()中傳參相當於開闢了一個空間將number1的值複製到了該空間,對複製值所進行的所有操作對原來的資料沒有任何影響。而add_2()中傳參則是開闢一個空間儲存number2地址,對num的所有操作等於對number2的操作。
c 引用
下面的程式碼和上面的程式碼幾乎一樣,修改的僅是幾個符號,但效果是一樣的。
#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; }
c 引用就是將number2取了個別名,實際在記憶體上儲存的還是number2記憶體位址,只是編譯器進行了一些最佳化和限制,就像我對電腦科學理解的一樣,不同的組織方式形成了不同的電腦體系結構。
3. c 引用作為返回值
#include<iostream>using namespace std;int n = 3;int& func() { return n; }int main() { int num; num = func(); cout<<num <<endl; return 0; }
函數返回的時指向n的隱式指針,但需要被引用的對像不得超過作用域,也就是說看變量是作用於那個函數體內的,像上面全域變數就可以被引用,但如果放在func函數內就不行了。
4. c 引用與指標的一些差異
#指標可以空指針,但引用必須指向一塊合法的位址空間。
指針可以從一個對象指向另一個對象,但引用一旦被初始化對象,則不可更改對象。
指標可以在任何時間進行初始化,但引用必須在建立時初始化。
相關推薦:
以上是簡介關於c++引用與指針的詳細內容。更多資訊請關注PHP中文網其他相關文章!