c++中的*与&对于初学者来说,确实有点让人搞懵。因为在变量的定义和调用时,*和&都会表现出不一样的含义。
一、
1.*在定义时是声明该变量是一个指针,例如int *p; //那p就是一个int型的指针。
例1:int a = 0; int *p = a; //那p的值就是a的地址。
注:上面的int a = 0; int *p = a;实际上是int a = 0; int *p = &a;这两者是等价的!!!
原因是int *p = &a;时,c语言本身提供了可以略去&的简写,但是本人不是很喜欢这样的写法,因为这样会误导初学者!
所以大家还是写全比较规范一点,写完int *p = &a,这样比较好。
c++就没有这样的简写机制,大家可以测试一下。
2.*在调用时是指针指向的那个变量,是取值运算符。
例2:int a = 0; int *p = &a; printf("*p = %d\n", *p);
二、
1.&在定义时是定义一个引用,例如:int a = 0; int &b = a;那么b就是a的引用,即b=0;如果再给a赋值a=10,则b也会变为10;如果给b赋值b=20,则a也会变为20;
2.&在调用时是一个取地址运算符。例如:int a = 0; printf("&a = %p\n", &a);会打印出a的地址,这个地址因为变量a在各个计算机的地址的不一样,所以打印的也不一样。
注:&在调用时还有一种与运算,如:int a = 0; a&=0; //按位与操作,这个就不细说了
三、
最近看到网上有关"c++*&符号连在一起"是什么意思,相信大家看完了一、二之后能自己解答出来的。