学了一年多的c++了,一直搞不懂&和⭐号有人能通俗一点讲一下
给你打个比方吧,指针就是只指南针,指南针的目的就是为了找到你要去的地方,而你要去的地方就是一个地址。
所以我们回归到你的问题,*就是充当寻找的角色,&就是一个门牌号,一个地址。这样理解了吧?
& 多种含义,取地址, 或者 位与, 或者定义引用类型
⭐ 定义指针,或者取指针指向地址的值,或者是乘号
你这个意思应该是指函数参数里面这里两个的区别吧。
下面就是只说作为函数参数里面这两个意思。*是指针(乘号作用不说了,还有就是取地址作用也不说),&是引用(按位与作用不说)。
要理解函数参数,你先要知道形参和实参的区别。形参就是不改变你原来传入函数的值,实参就是会改变。
而& 和*修饰的参数就是实参,你在函数里面的修改会改变原来的值。
void func(int &num1, int *num2, int num3) {
num1= 20;
*num2 = 30;
num3= 20;
}
int main() {
int a = 0;
int* b=new int;
*b=0;
int c = 0;
func(a, b, c);
cout << "a:" << a << endl;
cout << "b地址:" << b<<" b指向的内容值:" <<*b<< endl;
cout << "c:" << c << endl;
delete b;
b = nullptr;
return 0;
}
//最后的结果是a=20,*b=30,c=0,
可以看到实参的num1和num2的修改都将原始值a和b改掉了,但是形参num3修改却不会改变c的值,因为在进入函数的时候,形参会对原来的参数进行复制一份,对形参的操作是在复制的内容上面修改,并不会对原来的参数造成影响。但是问题就出现在这个复制上面,参数内存空间大的话,复制是很耗费时间的,而引用和指针就不需要复制,他是在原来的内存空间上面做的修改。
1.*指针:指针就是内存地址,你可以认为是你家门牌号地址,比如我家祖宅北京市东城区景山前街4号,指针就是这个就是地址,你想访问指针指向内容,你需要有这个地址,就像你想知道我家祖宅里面住了什么人,你要先知道门牌号地址是多少。或者你想往内存地址里面写入信息,也要这个地址,就像你寄信需要知道对方的位置一样才能寄到。
2.&引用。引用就是起别名,通俗将起外号。和上面的例子对应,就是你可以给你家起个名字,这个名字就是你家,家访这个名字就是家访你家。像我祖宅外号就叫故宫一样,参观故宫就是访问北京市东城区景山前街4号一样。
&是取出该元素的地址放在一个特定的变量中(找到该元素的路标出现了)
是解引用操作符,使用它,相当于路标出现在了你的手上
同时还加在类型的后面表示其中存的是一个地址
如:int a=0;
int* i=&a;
*i=a...