2025-11-29 22:40:54
想消除参数带来的影响,得看参数是怎么传的。如果是传值,比如函数a调用b,b里的x就是a传过去的,修改会变;要是传地址,比如c调用d,d里的y就是c的指针,修改会变。要消除影响,得看具体怎么传的,比如用const修饰参数,或者用new出来的对象自己改。
为什么得这样?因为编程里参数有值传递和地址传递两种方式,就像送水果和送水果篮子。值传递的话,每个函数有自己的一堆水果,送过去的是个复制品,吃掉水果篮子里的水果,水果篮子里的水果不会变。地址传递的话,送过去的是水果篮子的位置,吃掉水果篮子里的水果,水果篮子里的水果真的会变少。比如函数a调用b,b里的x就是a传过去的,修改会变,而全局变量y在a里改了,b里也能看到。有60%的初学者会犯这种错误,比如把const参数写成普通变量,结果修改了原数据。所以得先看参数怎么传的,再决定怎么消除影响。比如用new出来的对象自己改,比如new Person,这样对象在函数里改,不会影响到外面的。
本题链接: