① C语言中函数调用完的返回值储存在哪里
C语言里规定:16bit程序中,返回值保存在ax寄存器中,32bit程序中,返回值保持在eax寄存器中,如果是64bit返回值,edx寄存器保存高32bit,eax寄存器保存低32bit。
② 存储过程中调用带返回值的函数
如果是ACCESS、Mysql、SQL 2000 数据库
SELECT * FROM tabel_ WHERE date < (now()-30)
数据库都自带很多函数的
③ sql2000中如何调用带返回值的存储过程(百试不得其解)
如果你需要使用返回值,那么在执行存储过程之前声明一个变量用来接收变量的值
declare @m money
exec 48,@m output
select @m
上边的语句select @m的意思是把输出的参数显示出来,实际怎么用这个变量的值看实际情况了。
如果你不需要这个返回值,那就随便给变量赋一个值就可以了,注意类型要与过程的参数类型相同,比如
exec 48,8
④ 如何调用存储过程的返回值
存储过程
中的第一个参数
@title
将接收由调用程序指定的输入值,而第二个参数
@ytd_sales
将向调用程序返回该值。SELECT
语句使用
@title
参数以获得正确的
ytd_sales
值,并将该值赋予
@ytd_sales
输出参数。
CREATE
PROCEDURE
get_sales_for
⑤ 关于函数返回值的存储问题
fun里的a存储在调用fun函数时开辟的栈空间里,这块栈只在调用fun时对fun可用,调用结束后返回的a,其实是暂存在寄存器里的(一般情况下是eax),而返回到main里时,main又会把返回的值拷贝到自己所有的栈空间里(在这里是以临时变量的形式)。所以不管是fun还是main,任何非static、register变量和常量的存储都是在函数的局部存储区里(也就是对当前调用函数可见的栈空间)。main也是一个函数。
1、调用完就收回;
2、不是,栈是一段公共内存,函数的代码也不是存在栈里的,只是从栈上给新调用的函数分配一段栈空间,用来保存这个函数执行期间用到的局部变量;
3、函数的返回是被保存在寄存器里的(这个返回指的是return,不包括通过参数返回或者全局变量),栈空间由程序自动维护,函数退出以后栈的内容其实不会更改,只是栈指针复位,所以函数内部的局部变量声明了如果不赋值,它的值就是随机的也就是这个道理。