① 在匯編語言程序設計中,主程序與子程序之間進行參數傳遞的方法有哪些
對於參數個數可變的子程序,當參數不超過4個時,可以使用寄存器R0~R3來進行參數傳遞,當參數超過4個時,還可以使用數據棧來傳遞參數.
在參數傳遞時,將所有參數看做是存放在連續的內存單元中的字數據。然後,依次將各名字數據傳送到寄存器R0,R1,R2,R3;
如果參數多於4個,將剩餘的字數據傳送到數據棧中,入棧的順序與參數順序相反,即最後一個字數據先入棧.
再看看別人怎麼說的。
② 什麼是形參和實參參數傳遞的方式有哪些
一、函數中使用:
形參出現在函數定義中,在整個函數體內都可以使用,離開該函數則不能使用。
實參出現在主調函數中,進入被調函數後,實參變數也不能使用。
二、調用
形參變數只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只在函數內部有效。函數調用結束返回主調用函數後則不能再使用該形參變數。
實參可以是常量、變數、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使參數獲得確定值。
三、不是指針類型在內存中位置不同:
當形參和實參不是指針類型時,在該函數運行時,形參和實參是不同的變數,他們在內存中位於不同的位置,形參將實參的內容復制一份,在該函數運行結束的時候形參被釋放,而實參內容不會改變。
舉例:
1. 比如你定義一個函數void add(int a, int b),這里的a和b就是形參。
2. 當你進行函數調用的時候,add(1, 2),這里的1和2就是實參。
(2)指定存儲單元傳遞參數方式擴展閱讀
形參的作用是實現主調函數與被調函數之間的聯系,通常將函數所處理的數據,影響函數功能的因素或者函數處理的結果作為形參。
沒有形參的函數在形參表的位置應該寫void.main 函數也可以有形參和返回值,其形參也稱為命令行參數,由操作系統在啟動程序時初始化,其返回值傳遞給操作系統。
兩者關系:
在一般傳值調用的機制中只能把實參傳送給形參,而不能把形參的值反向地傳送給實參。因此在函數調用過程中,形參值發生改變,而實參中的值不會變化。而在引用調用的機制當中是將實參引用的地址傳遞給了形參,所以任何發生在形參上的改變實際上也發生在實參變數上。
③ C語言規定,調用一個函數時,實參變數和形參變數之間的數據傳遞方式是什麼
函數只有兩種傳遞方式:
1、值傳遞,又稱單向傳遞,只能把實參數值傳給形參 ,形參最後的結果不影響實參(形參改變大小 ,實參大小不變)。
2、址傳遞,通過指針,把實參的地址給形參,形參的大小可以影響實參。
(3)指定存儲單元傳遞參數方式擴展閱讀:
實參變數和形參變數之間的調用過程
1、函數的形參列於函數聲明中,在函數定義的函數體內使用,在未出現函數調用時,形參不佔內存中的存儲單元。
2、將實參的值傳遞給形參,當函數被調用時,實參列在函數名後面的括弧里,執行函數調用時,實參被傳遞給形參。
3、在執行函數期間,由於形參已經有值,可以利用其進行相關運算。
4、通過return語句將函數值帶回到主調函數。
5、調用結束,形參單元被釋放。實參單元仍保留並維持原值(值傳遞)。
④ oracle中調用存儲過程時傳遞參數值的3種方式。。
應該就是這三種吧。
1 , IN (參數值傳過來給存儲過程使用)
2, OUT(存儲過程返回結果給該參數)
3. IN OUT(存儲過程調用該參數的同時,最後還返回結果給調用的參數)
⑤ ORACLE中如何為存儲過程傳遞參數
第一種:只讀。參數是只讀的,不能修改,即調用時傳遞進來的是常量,或者變數(但變數不能在存儲過程中修改)。通常select及DML類型的存儲過程傳遞的是in類型的參數。
第二種:只寫。忽略調用語句傳遞的任何參數,並在函數(過程)內部給這些參數賦值,因此是只寫的。(這種情況是在函數或過程內部給參數重新賦值,但重新賦值後的參數是無法被外部調用的(好像游標類型的參數除外))
CREATE OR REPLACE PROCEDURE "SCOTT"."SWAP" (firstValue out
number, secondValue out number) is
temp number;
begin
temp := firstValue;
firstValue := secondValue;
secondValue := temp;
end swap;
外部調用:
set serveroutput on;
declare
firstVal number;
secondVal number;
begin
firstVal := 10;
secondVal := 20;
scott.swap(firstVal,secondVal);
dbms_output.put_line('first is ' || firstVal);
dbms_output.put_line('second is ' || secondVal);
end;
無法在外部訪問到firstValue與secondValue的值。此時列印出的結果為:
first is
second is
第三種:讀或寫。這可以完全控制參數,讀取傳遞的參數的值。可以再函數(過程)內部修改參數的值,在退出函數(過程)後,這些參數被賦給在函數內部寫入的值,這樣就可以返回多個值。(即入口參數寫入值後,可以傳遞到函數(過程)的外部,供外部調用的時候使用)
ps:函數中的返回值為如下幾種:
char; varchar2; number; integer; date; boolean; table; record
sql> CREATE OR REPLACE PROCEDURE HelloWorld2 (
2 p_user_name IN VARCHAR2,
3 p_out_val OUT VARCHAR2,
4 p_inout_val IN OUT VARCHAR2
5 ) AS
6 BEGIN
7 dbms_output.put_line('Hello ' || p_user_name || p_inout_val || '!');
8 p_out_val := 'A';
9 p_inout_val := 'B';
10 END HelloWorld2;
11 /
Procere created.
SQL> DECLARE
2 p_outval VARCHAR2(10);
3 p_inoutval VARCHAR2(10) := '~Hi~';
4 BEGIN
5 HelloWorld2('Edward', p_outval, p_inoutval);
6
7 dbms_output.put_line('p_outval=' || p_outval);
8 dbms_output.put_line('p_inoutval=' || p_inoutval);
9 END;
10 /
Hello Edward~Hi~!
p_outval=A
p_inoutval=B
PL/SQL procere successfully completed.
⑥ VB中過程調用時有幾種參數傳遞方式,說明其區別
有三個
(1)按值傳遞
這種傳遞方式只能將實參的值傳遞給形參,而不能將運算後形參的值再傳遞給實參,即這種傳遞只能是單向的,既使形參的值發生了改變,此值也不會影響到調用然後將該值傳遞給對應的形參。如果實在參數是常量或表達式,則默認採用的是值傳遞,在傳遞時先計算表達式的值,然後將該值傳遞給對應的形參。
(2)按地址傳遞
這種傳遞方式不是將實在的參數的值傳遞給形參,而是將存放實在參數值的內存中的存儲單元的地址傳遞給形參,因此形參和實參具有相同的存儲單元地址,也就是說,形參和實參共用同一存儲單元。在調用SUB過程或FUNCTION過程時,如果形參的值發生了改變,那麼對應的實參的值也將隨著改變,並且實參會將改變後的值帶回調用該過的程序,即這種傳遞是雙向的。如果實在參數是變數,則默認採用按地址傳遞。
(3)命名傳遞
前面講的按值傳遞和按地址傳遞,是按照形參和實參在參數表中的位置一一對應傳遞的。有時我們在調用過程語句的實在參數表中所寫的實在參數和在過程定義語句的形式參數表中所寫的形式參數位置並不一一對應,這時就需要使用命名傳遞。
使用命名傳遞,在調用過程語句的實在參數表中的參數格式為:
<形式參數>:=<實在參數>
其含義為:將右邊實在參數的值傳遞給左邊的形式參數。
⑦ 存儲過程參數傳遞有幾種方法
參數傳遞?
參數有in參數、out參數、in out參數
變數可用set和select賦值
獲取返回值只需設置變數、到時輸出就行
單行數據定義固定變數數、
如果結果是數據集、要用游標cursor
⑧ 大學Visual Basic 簡述VB過程中參數傳遞的方式
傳值,傳遞的只是變數的副本,如果過程改變了這個值,則所做變動隻影響副本而不影響變數本身
傳址,按地址傳遞參數,過程用變數的內存地址去訪問實際變數的內容。結果,將變數傳遞給過程時,通過過程可以永遠改變變數的值,按地址傳遞參數在vb中是默認的參數傳遞方式。
總體而言,若實參為常量、表達式且被調過程中相對應的形參變數前有關鍵字By Val,則將常量或者表達式的值傳遞給被調過程中相對應的形參,即為值傳遞。若實參為變數或數組,且形參變數前沒有關鍵字By Val則實參傳遞給形參的是地址,此後實參和形參指向同一存儲單元,因此,在執行被調過程中,形參的變化直接影響實參。
⑨ 存儲過程參數的傳遞
解決方案一:
使用動態SQL , 即定義一個 字元串 @sql , 組合好以後, Exec( @sql )
解決方案二:
使用 CHARINDEX 取代掉 LIKE
例如:
Select
ClassName,ClassType,ClassID,ClassImg
from
OA_Class
where
classid=classparentid
AND charindex(',' + rtrim(classId) + ',', ',' + classId(@classId) + ',') > 0
⑩ 操作系統中用戶程序的參數是如何傳遞給程序的
1、按值傳遞參數
按值傳遞參數時,是將實參變數的值復制一個到臨時存儲單元中,如果在調用過程中改變了形參的值,不會影響實參變數本身,即實參變數保持調用前的值不變。按值傳遞參數時,需要在參數名前加「ByVal」關鍵字。
2、按地址傳遞參數
按地址傳遞參數時,把實參變數的地址傳送給被調用過程,形參和實參共用內存的同一地址。在被調用過程中,形參的值一旦改變,相應實參的值也跟著改變。如果實參是一個常數或表達式,Visual Basic 6.0會按「傳值」方式來處理,按地址傳遞不需要「ByVal」關鍵字。
3、按數組傳遞參數
在VB6.0中,允許使用數組作為實參傳遞到子過程的形參中,數組傳遞必須採用地址傳遞的方式來傳遞參數。數組參數在傳遞時應注意以下兩個方面:
在實參和形參列表中只寫數組名,忽略維數的定義,但圓括弧不能省,當數組作為參數傳遞時,系統將實參數組的起始地址傳給過程,使形參數組也具有與實參數組相同的起始地址,若參數是多維數組,每維以逗號分隔;被調過程可分別通過Lbound和Ubound函數確定實參數組的下界和上界。
(10)指定存儲單元傳遞參數方式擴展閱讀
由操作系統實現提供的所有系統調用所構成的集合即程序介面或應用編程介面(Application Programming Interface,API)為應用程序同系統之間的介面。
操作系統的主要功能是為管理硬體資源和為應用程序開發人員提供良好的環境來使應用程序具有更好的兼容性,為了達到這個目的,內核提供一系列具備預定功能的多內核函數,通過一組稱為系統調用(system call)的介面呈現給用戶。
系統調用把應用程序的請求傳給內核,調用相應的的內核函數完成所需的處理,將處理結果返回給應用程序。