想提问一下一个关于c++引用的问题

img


请问这里func函数为什么小括号里装的是int &类型的
为什么不是普通的int函数

img


我尝试了一下换成int类型发现改变不了原值,虽然int类型确实无法达到效果
但我还是想问一下这是什么原理
请各位帮我解答一下

int型的话只是将值进行传递,函数会重新定义一个内部变量,然后赋值传入参数的值。实际是两个int变量,因此你修改内部变量的话,外部变量是不会发生变化的
而使用int &,是引用类型,实际传递的是一个别名。就像你有一堆小名一样,实际指向的都是同一个人,那么修改这个别名的内容,实际就是修改这个人的内容,所以用引用的话,函数内部改变值就可以改变外部传入变量的值

因为int参数是栈上的一个副本,所以在函数内修改仅能修改这个副本,修改不了外部传进来的参数对应的变量。
在调试时看对应汇编指令加深理解函数传参过程。