php中的&操作符和c语言&操作符有什么区别
答案:2 悬赏:30 手机版
解决时间 2021-02-08 00:36
- 提问者网友:眉目添风霜
- 2021-02-07 01:18
最近在学php,看到有一个操作符&,大概是取得变量的引用,这样&$A赋值给$B之后,两个变量指向一块内存,改变$B的值也会改变$A的值,这样的话,应该就是所谓的‘取指针’操作符了。不过我记得在C语言中,&不是用来取得指针变量的所指向的值吗。比如 int* a。a是指针变量,&a是a指向的值,也就是内容啊。这两个好像是反的,是这样吗,之前一直在搞java和c#,指针的内容淡忘了,不好意思哈,谢谢
最佳答案
- 五星知识达人网友:你可爱的野爹
- 2021-02-07 01:30
C中,int* a;,&a得到的不是a指向的int的值,而是类型为int*的a变量的内存地址。这点题主大概是记错了吧。无论何时C中&都是取变量自己的内存地址。*a得到的才是它指向的整型变量的值。
我们要清楚一点:PHP是解释型的语言,并不会编译成二进制,内存方面都交给运行时环境去做了。种种特性,表明这不需要开发者去关心底层。因此,PHP中规定&是绑定到某个变量,那么它就是这样。
不仅PHP,包括问题中所提到的Java、C#,虽然它们也需要编译,但是编译后的.class和msil仍然要在JRE和.NET CLR上才能运行。这些语言的特点就是运行时环境帮助开发者做了很多事情。这与C这个需要开发者手动管理内存的语言有着本质上的区别。
我们要清楚一点:PHP是解释型的语言,并不会编译成二进制,内存方面都交给运行时环境去做了。种种特性,表明这不需要开发者去关心底层。因此,PHP中规定&是绑定到某个变量,那么它就是这样。
不仅PHP,包括问题中所提到的Java、C#,虽然它们也需要编译,但是编译后的.class和msil仍然要在JRE和.NET CLR上才能运行。这些语言的特点就是运行时环境帮助开发者做了很多事情。这与C这个需要开发者手动管理内存的语言有着本质上的区别。
全部回答
- 1楼网友:煞尾
- 2021-02-07 02:58
首先说明c语言没有引用的概念,而vc++2005只是一款c++编译器而已,所以讨论引用的问题只是在c++中。
引用可以被认为是一个变量的别名,引用在定义时必须指定其所引用的原变量且不可以修改。
与指针的关系,可以认为引用是一个不需要逆向引用(*)就可以对变量进行访问的常量指针。
简单例子:
int a=5;
int &ra=a;
int *pa=&a;
则下面的操作是相同的效果
ra=3;
*p=3;
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯