函数的返回值存放在哪里

调用函数时,函数的返回值存放的位置具体在哪里呢?按照概念来说,函数的返回值应该放在被调用函数运行结束之后,主调函数可以有效访问的地方,也就是说,函数返回值应当存放在主调函数开辟的栈空间

但是,计算机硬件的飞速发展使得CPU的通用寄存器字长在不断增长,个数也不断增多,因此在很多情况下,函数的返回值直接被存放在了CPU的通用寄存器中,而并非一定需要计算机的内存空间

具体类型的返回值的存放位置如下所示:


  • char(8bit):寄存器a1
  • short(16bit):寄存器ax
  • int(32bit):寄存器eax
  • double(64bit):协处理器堆栈
  • 指针、引用:寄存器eax
  • 类的对象且体积超过64bit:主调函数会在函数栈上创建临时对象存放