2009-01-09 80 views
177

我經常發現自己與如何使用術語'參數'和'參數'混淆。它們似乎在編程世界中可以互換使用。參數或參數?

他們使用的正確慣例是什麼?

+0

爲了記錄,一個密切相關的問題:http://stackoverflow.com/questions/156767/whats-the-difference-between-an-argument-and-a-parameter(這是制定爲C#特定的,而這是語言不可知的;否則基本上是一樣的。) – Jonik 2009-08-27 11:27:30

+0

@Jonik:這不是C#的真正具體情況,因爲海報還詢問了其他編程語言中的術語。另一個問題是年紀較大,並且(在我看來)有更好的答案。 – 2012-08-21 01:27:06

+1

如果我們把它看作是語言不可知的,那麼它確實是一個確切的愚蠢。 – 2012-08-21 01:37:47

回答

194

參數是由函數定義的東西作爲輸入,參數是作爲參數傳遞的東西。

void foo(int bar) { ... } 

foo(baz); 

在這個例子中,barfoo的參數。 baz是傳遞給foo的一個參數。

+11

Rinat有正式的定義 - 你有沒有錯,但它也不是很正確。 – avgvstvs 2011-04-07 15:47:57

13

參數是您在調用子程序時所擁有的。參數是你在子程序中訪問的內容。

argle(foo, bar); 

foobar有觀點。

public static void main(final String[] args) { 
    args.length; 
} 

args是參數。

4

雖然維基百科幾乎不是權威來源,但它做的體面的工作explaining the terms

我想你可以說參數是參數哪些類對象的實例...

188

一個參數是在函數的聲明一個變量:

functionName(parameter) { 
    // do something 
} 


An 參數是傳遞給該函數的此變量的實際值:

functionName(argument); 
5

有關於這個問題的維基百科文章parameter有很好的部分。

總之 - 參數是通過功能和參數定義的正式名稱爲實際值(如5)或東西(例如變量)傳遞到功能。

26

對於user1515422,顯示參數和參數之間的差別非常具體的例子:

考慮一下這個功能:

int divide(int numerator, int denominator) { 
    return numerator/denominator; 
} 

它有兩個參數numeratordenominator,當它被定義設置。一旦定義,函數的參數是固定的,不會改變。

現在考慮函數的調用:

int result = divide(8, 4); 

在這種情況下,84是傳遞給函數的參數numerator參數設置爲參數8的值,並且denominator設置爲4。然後該函數的參數被設置爲參數的值。你可以認爲這個過程中等同於:

int divide() { 
    int numerator = 8; 
    int denominator = 4; 
    return numerator/denominator; 
} 

參數和參數之間的區別是類似於一個變量,它的值之間的差異。如果我寫int x = 5;,變量爲x,值爲5。可能會產生混淆,因爲很自然地說「x是5」這樣的詞是「變量x的值爲5」的縮寫,但希望這種區別是明確的。

這是否說明了事情?

1

只是沒有重大的區別。如果我們深入到這裏,我們可以識別diff.Mainly我們知道參數/參數/簽名都是相同的。

基本上參數限定我們passing.Where爲參數定義的實際數據/可變我們傳遞的數據的類型。

參數示例: -

int add(int a,int b){ //Here a and be both can treated as Parameter 
return a+b; 
} 

參數,例如: -

int return_result=add(3,4); // Here 3 and 4 both can treated as Argument 

or 

int x=3,y=4; 
int return_result=add(x,y);// Here x and y both can treated as Argument 
1

在大多數情況下,過程大概需要在它被稱爲情況的一些信息。執行重複或共享任務的過程對每個呼叫使用不同的信息。該信息由變量,常量和表達式組成,當您調用它時傳遞給過程。

爲了將此信息傳遞給過程,過程定義了一個參數,調用代碼將參數傳遞給該參數。您可以將參數視爲停車位,將參數視爲汽車。正如不同的汽車可以在不同的時間停放在停車場所一樣,每次調用程序時,調用代碼都可以將不同的參數傳遞給相同的參數。

參數

的參數表示該過程需要你的時候你怎麼稱呼它傳遞一個值。過程的聲明定義了它的參數。

當你定義一個功能Sub過程,你在括號中註明立即進程名之後的參數列表。對於每個參數,可以指定一個名稱,一個數據類型和一個傳遞機制(ByVal或ByRef)。你也可以指出一個參數是可選的,這意味着調用代碼不必爲它傳遞一個值。

每個參數的名稱作爲過程中的局部變量。您使用參數名稱的方式與使用其他變量的方式相同。

參數

的說法代表了你傳遞給一個過程參數,當你調用程序的價值。調用代碼在調用過程時提供參數。

當你調用一個函數程序,你有一個參數列表中的括號馬上過程名以下。每個參數對應於列表中相同位置的參數。

與參數定義不同,參數沒有名稱。每個參數都是一個表達式,它可以包含零個或多個變量,常量和文字。評估表達式的數據類型通常應該與爲相應參數定義的數據類型匹配,並且在任何情況下都必須可以轉換爲參數類型。

0

實際上,參數和參數都是不同類型的參數。這些都是

1)形式參數 - 變量出現在函數/子程序定義

爲如。 (以Java計)

public void foo(Integer integer, String... s2) 

這裏整數和s2都是形式參數或鬆散地說是參數。

2)實際的參數或自變量 - 變量出現在子程序而要求例如

已經定義子程序

。 (在Java中) 假設如果「foo」函數存在於對象「的TestObject」,

testObject.foo(new Integer(1), "test") 

所以在函數定義的變量稱爲形參或簡單參數和變量,而調用方法被稱爲實際參數或參數。我希望它有幫助。

0

認爲它像基本代數。 X是你必須填寫的參數,放在它裏面的數字就是參數。所以如果你有一個像X + 2這樣的等式,X是你的參數,並且你爲X改變的任何數字都被稱爲參數。所以如果使用這個公式,你補充1的x,你會得到1 + 2。這意味着1是一個參數,提供給參數X.

同樣,如果你有像dosomething(「this」)這樣的函數,它的定義將是dosomething(string parametername),但是「This」會是正在提供給參數的實際參數,這裏命名爲parametername。

以最簡單的方式來看它,參數是參數填充的東西,參數可以是該參數允許的任意數量的東西。

所以這是參數和參數之間的多對一關係,因爲您可以有一個參數可以有許多有效參數,就像我們上面的X + 1方程一樣。 X可以是任何已知的數字,並且它們都是有效的。

2

當你定義像函數:

MyFunction(param1,param2) { 
    print parameter1, parameter 
} 

當你定義功能設置的參數。 當你調用這樣的功能:

MyFunction('argument1', 'argument2'); 

您設置的參數,你傳遞的參數的值。這些論點是你在調用它的時候提出的問題。希望有所幫助。

0

變量是一個存儲位置和一個包含數據和值的關聯符號名稱(標識符)。

參數是一個傳遞給函數的變量。

參數是傳遞給函數的數據(值)。

$variable = 'data/value'; 

function first($variable){ ... } 

function second('data/value'){ ... } 
function third(16){ ... } 

函數首先我們傳遞一個參數。

函數第二個和第三個我們傳遞參數。