黑马程序员技术交流社区
标题:
有点难度》》
[打印本页]
作者:
魏冬
时间:
2012-11-12 23:06
标题:
有点难度》》
本帖最后由 魏冬 于 2012-11-14 11:28 编辑
他的输出结果是多少?在求高手说一下他的运行原理?
QQ截图20121112230434.png
(68.53 KB, 下载次数: 40)
下载附件
2012-11-12 23:05 上传
作者:
杨深
时间:
2012-11-12 23:22
其实没什么难度,无非是把数组元素值翻倍而已。
第一次执行ShowArr(arr),此时arr元素为
2,4,6
,进入for循环,
for循环(以i=0开始,i<数组长度结束,即将数组每个值遍历一次)内:Console.Write(arr
);输出数组的每个值:
结果是输出246
;(Console.Write为单行直接输出)
arr
= arr
* 2;数组每个元素的值都乘上2,
结果:arr内的元素变为4,8,12(注意只是改变了arr的值,并未输出)
第二次执行ShowArr(arr),此时arr元素为
4,8,12
进入for循环,
for循环(以i=0开始,i<数组长度结束,即将数组每个值遍历一次)内:Console.Write(arr
);输出数组的每个值:
结果是输出4812;
两次ShowArr(arr)执行结果是2464812
(其实为了方便查看,建议写Console.WriteLine)
如果还不懂的话,可以在 public static void ShowArr(int[] arr)方括号内断点查看两次ShowArr对arr的改变,
在for (int i = 0; i < arr.Length; i++)
断点,查看每次for循环输出的值和改变后的arr的元素
作者:
朱勇
时间:
2012-11-13 10:52
楼上正解!
作者:
陈辉
时间:
2012-11-13 12:39
1、首先得明白一点,数组是引用类型,所以ShowArr函数中的数组和Main函数中的数组是用的同一块内存(是在托管堆上分配的),然后将这块内存的地址放入Main函数的
arr变量和ShowArr函数的arr变量中,因此,ShowArr函数中的数组数组的改变,会导致Main函数中的数组数组的改变
2、当第一次调用ShowArr(arr),使得数组中的元素扩大2倍,此时Main函数中的数组也扩大了2倍,因为他们共用同一个内存。
当第二次调用ShowArr(arr),此时传入的arr是扩大两倍后的arr
作者:
武江英
时间:
2012-11-14 11:35
我觉得,这是想让你感觉一下调用函数传的参数是数组的地址。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2