一、C/C++中的函数参数传递二、python中函数的参数传递问题
一、C/C++中的函数参数传递
1.C/C++中的普通参数传递和指针参数传递本质上都是值传递,只不过当使用指针接收实参传递的时候,传过来的是地址,所以函数中的任何操作都会对实参产生影响。
2.另一种方式是引用传递,但是和值传递不同的是,它并没有进行拷贝操作,而是相当于给实参一个“别名”来达到操作实参的目的。使用方式如下:
#includevoid reset(int &a){ a = 0; } int main(void){ int a = 10; reset(a); cout << a < 使用引用方式传递参数,可以提高效率,避免了值得拷贝。
二、python中函数的参数传递问题1.python中的参数传递需要从赋值说起,C/C++中的赋值,是将值进行复制
//C/C++ int a = 1; int b = a;//进行到这一步是有两个内存块中存的都是1,b=a是相当于将a的值复制到b的内存中#这里a和b指向的是用一块内存空间 a = 1 b = 1 #这里b=a的操作是将b也指向a的空间,a和b还是指向同一空间 a = 2 b = a2.python中的参数传递方式和上述赋值形式本质相同,关于在函数中的操作是否会影响实参,和实参是可变对象还是不可变对象有关,
可变对象是指对象的这块内存空间中的值可以修改,赋值操作就是在修改这块内存中的值。
不可变对象即这块内存中的内容不可修改,赋值操作实际是开辟了一块新的内存空间,将变量名指向这块内存。
对于不可变对象,对参数的操作不会影响之前的参数,对于可变对象,函数中可以实实在在的改编实参。3.python中常见的不可变对象有:
整型浮点型布尔型复数字符串元组
可变对象有:
列表集合字典其他迭代器



