f中第一个参数是传值编译器会复制一份a传递给函数f,复制的临时变量与a是两个不同的变量,它们的地址不同此后f中的x与main中的变量a不再有任务关联
f的第二个参数是传地值,f中的y与b的地址在内存中是相同的操作的是同一个地址
你对这个回答的评价昰?
你对这个回答的评价是
f()传入的a是a的值,不是地址
你对这个回答的评价是
只注意到了有符号到无符号的转换没注意到short到int的转换,这位老师说的很清楚你可以看一下
————————————————————————————————————————————便于理解我做一个测试:
断下单步执行后,先看一下局部变量窗口i的值(数组的地址)然后再内存窗口跳转到该地址,可以看到数组i在内存中存放的形式
至于为什么要用数组和为什么偠解释这一步是因为看到上面有人说什么把它后面的数据也输出了,故验证一下
我们可以看到short转换成int确实会经历integer promotion(整型提升),也就是说峩们把i[1]赋值给变量ii并不只是简单的内存拷贝
我简单说一下我理解的转换过程:
首先int ii,编译器会为ii分配4个字节的内存地址然后再根据“=”号右边的表达式的结果初始化;
"="号右边是i[1],编译器首先会取出它的值得出结果 -4,然后用-4初始化变量ii;
————————————————————————————————————————————————
最后再感谢一下fefe82老师另外同学其实不必过于纠结存储方式囷占用多少字节什么的,了解就可以了
f中第一个参数是传值编译器会复制一份a传递给函数f,复制的临时变量与a是两个不同的变量,它们的地址不同此后f中的x与main中的变量a不再有任务关联
f的第二个参数是传地值,f中的y与b的地址在内存中是相同的操作的是同一个地址
你对这个回答的评价昰?
你对这个回答的评价是
f()传入的a是a的值,不是地址
你对这个回答的评价是
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。