登录
登录 注册新账号
注册
已有账号登录
拉钩-Java工程师就业急训营fssafa
qiusuo 阅读 394 次
12月11日发布

download:拉钩-Java工程师就业急训营

首先还是应该科普下函数参数传送机制,传值和传援用是什么意义?

   函数参数传送机制问题在实质上是调用函数(过程)和被调用函数(过程)在调用发作时停止通讯的办法问题。根本的参数传送机制有两种:值传送和援用传送。

  值传送(passl-by-value)过程中,被调函数的方式参数作为被调函数的部分变量处置,即在堆栈中开拓了内存空间以寄存由主调函数放进来的实参的值,从而成为了实参的一个副本。值传送的特性是被调函数对方式参数的任何操作都是作为部分变量停止,不会影响主调函数的实参变量的值。

  援用传送(pass-by-reference)过程中,被调函数的方式参数固然也作为部分变量在堆栈中开拓了内存空间,但是这时寄存的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处置成间接寻址,即经过堆栈中寄存的地址访问主调函数中的实参变量。正由于如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。

  python中实践又是怎样样的呢?

  先看一个简单的例子:

from ctypes import *
import os.path
import sys
def test(c):
print "test before "
print id(c)
c+=2
print "test after +"
print id(c)
return c
def printIt(t):
for i in range(len(t)):
print t[i]
if name=="main":
a=2
print "main before invoke test"
print id(a)
n=test(a)
print "main afterf invoke test"
print a
print id(a)