22、编程中参数传递、内存映射及语言特性的影响

编程中参数传递、内存映射及语言特性的影响

1. 参数传递机制

在编程里,常规的编程语言都具备指定函数、过程或者子程序的功能,这些子程序带有参数。参数的作用是让函数里的操作能够应用于不同的数据。例如在编写矩阵乘法代码时,我们期望子程序能用于不同大小的矩阵,这通常借助参数来达成。可以把参数看作是专门用于数据导入和导出的数据结构。

参数的使用和参数传递的方式紧密相关,主要有三种基本不同的传递方式:按值传递、按引用传递和按名称传递,其他传递方式是这些方式的变体或组合。参数的传递方式取决于编程语言,它是语言定义的一部分,而且大多数编程语言并不支持所有这三种方法。

1.1 按值传递

按值传递通常被认为是三种方式中最简单的。它假定实际参数有一个值,形式参数对应一个内存位置。若这些假设都满足,实际参数会被求值,其结果值会被复制到形式参数对应的内存位置。若有假设不成立,按值传递就无法执行(或者会在编译时或运行时产生错误)。成功的函数调用执行时,形式参数就像函数的局部变量,只是在执行函数体的指令之前被赋予了初始值。函数体执行结束,控制权返回调用程序后,形式参数就不再可访问。按值传递的一个重要方面是,形式参数所需的空间要视为额外空间,这会增加程序的空间复杂度。而且,将实际参数的值复制到形式参数的位置需要时间,这也会增加时间复杂度。

1.2 按引用传递

按引用传递假定每个实际参数对应一个内存位置。在函数调用执行期间,相应的形式参数会与这个内存位置关联。所以,在函数体的指令中使用形式参数,实际上就是使用分配给对应实际参数的内存位置。由于实际参数分配的内存空间也被形式参数使用,按引用传递通常需要更少的空间。

1.3 按

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值