函数调用时,当实参是不可变对象时,形参值改变不会影响实参;当实参是可变对象时,形参值改变可能会影响实参。
时间: 2024-04-06 21:35:21 浏览: 41
是的,这是正确的。当实参是不可变对象(如数字、字符串、元组等)时,形参值的改变不会对实参造成影响,因为这些对象的值是不可变的。而当实参是可变对象(如列表、字典等)时,形参值的改变可能会影响实参,因为这些对象的值是可变的。具体来说,如果函数内部修改了可变对象的值,那么这个对象在函数外部的值也会被改变,因为它们是同一个对象的引用。
相关问题
函数调用时,当实参是不可变对象时,形参值改变不会影响实参;当实参是可变对象时,形参值改变可能会影响实参
是的,当函数调用时,如果实参是不可变对象(如数字、字符串、元组等),则函数内对形参的值的修改不会影响到实参的值。因为不可变对象的值在创建后无法改变,如果函数内部试图修改形参的值,实际上是创建了一个新的对象,并将形参重新指向了这个新对象,不会改变原来实参所指向的对象。
而当实参是可变对象(如列表、字典等)时,函数内部对形参值的修改可能会影响到实参的值。这是因为可变对象的值可以在原地修改,函数内部对形参值的修改会直接影响到实参所指向的对象。如果不想在函数内部修改实参,可以在函数内部创建一个新的可变对象,并将实参的值复制一份到新对象中,然后对新对象进行操作。
函数与指针作为形参能够改变调用函数实参的值原理是什么?
函数和指针作为形参能够改变调用函数实参的值,是因为函数参数传递的是实参的副本,而指针作为形参可以通过间接访问修改实参所在内存地址中的值。
当我们将一个变量通过值传递给函数时,函数会创建该变量的副本,并在函数内部使用这个副本进行操作。这意味着对于函数内部来说,它操作的是一个新的变量,而不是原始的实参。因此,在函数内部对形参的修改不会影响到原始的实参。
但是,当我们将指针作为形参传递给函数时,实际上是将实参的内存地址传递给了函数。函数内部通过这个指针可以直接访问和修改实参所在内存地址中的值。因此,通过指针形参可以改变实参的值。
简而言之,通过传递指针作为形参,函数可以直接操作实参所在内存地址中的值,从而改变实参的值。而通过传递值作为形参,函数只能操作副本,无法改变原始实参的值。