关于函数的返回值是局部变量问题

2019-07-20 23:49发布

小弟最近在纠结函数的返回值是局部变量的问题,看了网上大神的解答,主要有如下2个说法:
说法1>被调用函数的返回值是存放在栈中,退出被调用函数时,这个栈消失,但是值被拷贝一份,然后传给调用函数
说法2>调用函数和被调用函数共享同一个栈内存(被调用函数是调用函数内部的一个语句),所以,当退出被调用函数后,这个局部变量的栈内存没有消失,直到这个调用函数结束才退出.
请问大神:
问题1>如果说法1>成立,那么被拷贝的这个值是存放在哪里?CPU通用寄存器中,普通内存中?还是要看编译器的实现?
问题2>如果说法2>成立,那么假如这个调用函数也是main()函数的一个语句,那是不是说所有程序段都是共享一个栈内存(main()函数的栈内存)?似乎很矛盾啊?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。