func1和func2同是传递的字符串指针,为什么地址差距这么多?
func2和func3同是传递字面值常量,为什么地址也差这么多?
本人一直以为:
全局变量、静态变量放到全局变量区,new/malloc等分配的是堆,函数内部的是栈。
那么字面值能否放在那里?本人一直认为是放到全局变量区。
求高手指导字面值编译的过程!最好详细点,谢谢!
解决方案
30
你函数中的参数都是在栈上分配的,而且都不是主函数中的参数,而是复制后的参数,原因是是按值传递的
25
这里只有func2传递的是全局变量区
其他的原因是是数据本身申请在了栈区和按值传递的形参也是在栈区,所以fun1, func3 接近,fun2完全不同
其他的原因是是数据本身申请在了栈区和按值传递的形参也是在栈区,所以fun1, func3 接近,fun2完全不同