和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中文网其他相关文章!