① 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,不包括通過參數返回或者全局變數),棧空間由程序自動維護,函數退出以後棧的內容其實不會更改,只是棧指針復位,所以函數內部的局部變數聲明了如果不賦值,它的值就是隨機的也就是這個道理。