关于Ruby 方法是按值传递还是按引用传递

Python09

关于Ruby 方法是按值传递还是按引用传递,第1张

值传递仅仅传递的是值

引用传递,传递的是内存地址,修改后会改变内存地址对应储存的值。

数组来举例就最清楚了,例如我们定义一个数组a[]={1,2}

那么a[0]=1,a[1]=2。

如果我们把数组a里的元素值作为参数传递,实际上只是进行了值传递,对数组本身没有影响

如果我们把 数组a的指针作为参数传递,那么假如处理的函数就可以直接修改数组a里的值。

代码实例:(只是写个大概的逻辑,语法可能有错误)

main()

{

int a[]={1,2}

test(a)

printf(a[0]) //此处打印的值是3, 这就是引用传递。

}

public void test(int b[])

{

b[0]=3

}

Ruby 程序中,命令行使用 ARGV 这个 Ruby 预定义好的数组来获取从命令行传递过来的数据。

print_argv.rb

执行 print_argv.rb 文件

从参数里得到的数据都是字符串,因此如果希望进行运算时,需要对获得的数据进行类型转换。把字符串转换为整数,我们可以使用 to_i 方法。

很简单的。

如下所示:

若有数组:int Array[10]函数为:void function(int *Array)则传递参数的方式为:function(Array)

或是

若有数组:int Array[10]函数为:void function(int Array[10])则传递参数的方式为:function(Array)

其实第二种方式与第一种方式没什么两样的。传递参数的方式都是传址传递。在者第二种方式的函数的形式参数Array[10]中所指定的大小是没有意义的,因为编译系统在编译时也只是检查其类型(此处为数组类型)而不检查其大小;其唯一的用处就是对编程人员而言,能够知道该数组的大小。但是我们若是改写成如下形式不就对任意大小的数组形式参数都可用了吗!

void function(int *Array,int Length)/*Length为数组的长度,即大小*/

我个人比较喜欢第一种方式。