指针/引用
相同点:是变量地址的概念
指针:指向存储器,指针本身存储该存储器的地址
引用:是这个存储器的别名
c:
int a=10;
int *b=a;
*b=5;
int *c=b; //warning int*=int **
*c=1; //错误的使用方法无法改变a的值
php:
$a=10;
$b=$a;
$b=5;
$c=$b;
$c=1;
echo $a; //输出1、a、b、c这3个变量都是其存储器的别名
赋值
C语言只有交货
例如,结构也是copy变量
想改变实参的内容的话,只有使用指针了
struct_a go={1};
func(go );
voidfunc(struct_a ) {
a.b=10; //并不改变外面go的内容
}
在php中,class是引用传递,其他是传递值
$a=new MyClass (;
$a-a=10;
$b=$a;
$b-a=5;
echo $b-a; //输出5,$b为
值得注意的是数组,虽说都是加价,但表达方式不同
c:
inta [5]={ 1,2,3,4,5 };
int *b=a;
b[0]=10;
printf(%d(n ),a[0]; //输出10
php:
$ a=[ 1,2,3,4,5 ];
$b=$a;
$b[0]=10;
echo $a[0]; //输出5
在c语言中,a表示数组a[5]的最初变量的地址,所以代入时使用指针int *p
在php中$b=$a那是纯粹的价格传递,数组$a copy一份