计算机二级C语言参数问题

img


解析没看懂,为什么得那个答案,难道俩*s都是局部指针变量吗?互不干扰,那他也是double类型的呀

其实没那么复杂,给你弄几个数据:

main 中:
a 的地址为 0x1000;
s 的地址为 0x2000;
0x1000 这个内存里面存什么?存的是数组a 的元素,没问题吧?
0x2000 里面存的什么?存的是a 的地址,也就是0x1000,这个能理解吗?
s 是个变量,人家也有自己内存,只不过内存里面存的是 a 的地址

func中:
形参s 地址为0x3000,存的是什么?是实参的值,也 就是main 中s 的值,也就是a 的地址,也就是0x1000
func 中malloc 了,我靠,申请了一个新的内存给了 s,这个时候,0x3000 里面存的就不是0x1000,而是0x4000
你明白了吗?
func 中自始至终,人家改的都是0x4000 的内存,跟0x1000 有关系么?

回到 main中,
s 的地址是多少?不要倍形参迷惑,这里的s 还是0x2000,存的还是0x1000

供参考:

img