2012-11-12 30 views
2

也許這只是爲了顯示。在閱讀K & R時,的開頭1.7功能顯示了一個冪函數的例子。代碼的第二行聲明int power(int m, int n);用函數本身使用的不同命名參數聲明函數的目的是什麼?

爲什麼是第一個參數,n,比第一個參數,base命名不同,在功能的來源:

int power(int base, int n) 
{ 
    ... 
} 

這只是爲了表明名字不需要一樣嗎?這種做法應該避免嗎?爲什麼或者爲什麼不?

+0

保存你按下3個鍵,但'int power(int,int);'會爲你節省更多。 – Musa

+1

@Musa然後你不能把power()函數的源頭放在main()前面,以便保存27個按鍵嗎? – Leonardo

+0

是的,您可以將定義提前使用。有一個聲明和一個定義是有好處的;它給出了一致性檢查的元素。更典型的是,該函數將位於'main()'程序的單獨源文件中,並且頭文件將包含該聲明,並且定義該函數的文件和包含main()程序的文件都將在其中該函數被使用 - 將包括頭。標題提供了一致性檢查。 –

回答

4

在原型聲明中,類型而不是名稱是重要的。有些人省略了聲明中的參數名稱;有些在聲明中使用更多的描述性名稱(因爲人們可能需要在標題中讀取它們)而不是在函數定義中。相反的情況似乎就是這樣;定義中的名稱比聲明中更有意義。

這是純粹的文體。我通常認爲在聲明和定義中使用相同的名稱,但有時候定義(解釋參數)所需的名稱過於冗長,因此不適合在函數定義中使用。

請參閱Stroustrup的「C++的設計和演化」一文,討論爲什麼命名參數不屬於C++的一部分。是的,那就是C++,但是那裏的參數(主要是聲明和定義之間不必要的耦合)也適用於C語言。

相關問題