我總是在main()之前聲明函數。令我困惑的是聲明,定義,分配和傳遞函數參數的正確(或至少是最佳實踐)方法。例如,這個工程:正確的C函數參數變量定義位置
// EXAMPLE 1 //
int idum1 = 1;
void my_func(int); // Says the function's going to need an integer.
void main (void)
{
my_func(idum1);
}
void my_func(idum2) // Is this then declaring AND defining a local integer, idum2?
{
// Do stuff using idum2...
}
但這個工程太:
// EXAMPLE 2 //
int idum1 = 1;
void my_func(int idum2); //Is this declaring a variable idum2 local to my_func?
void main (void)
{
my_func(idum1);
}
void my_func(idum3) // A different variable or the same one (idum2) still works.
//Is this declaring idum3 as a local integer?
{ //What happened to idum2, still a viable integer in the function?
// Do stuff using idum3...
}
而且這個工程:
// EXAMPLE 3 //
int idum1 = 1;
void my_func(int idum2); // Declaring...
void main (void)
{
my_func(idum1);
}
void my_func(int idum2) //Declaring again. Different address as in function declaration?
//Same variable and address?
{
// Do stuff using idum2...
}
所以做到這一點:
// EXAMPLE 4 //
int idum1 = 1;
void my_func(int);
void main (void)
{
my_func(idum1);
}
void my_func(int idum2) //Yet another way that works.
{
// Do stuff using idum2...
}
我是一個自學成才的初學者,但我一直在吱吱嘎嘎並沒有真正瞭解正確的方式以及幕後發生的事情。我只知道它有效(總是很危險)。
我的直覺說例4是最好的方法;告訴它它需要什麼類型,然後在函數中將它聲明爲類型以便於編碼和錯誤檢查。我確信有這樣或那樣的理由,這取決於你想要做什麼,但真的可以在這裏使用一些指導。
我確實看到了示例3,但看起來多餘,聲明瞭一個變量兩次。
有人可以解釋或指向我的一篇文章,解釋我試圖在這裏得到的東西的來龍去脈嗎?幾乎不知道我在問什麼,iykwim。網絡上的一切都如此碎片化。試過CodingUnit,但教程只是不夠深入。 TIA!
'void main(void)'是宿主環境中的無效簽名。 'main'將返回一個'int'結果。 – Olaf
如果這是「主要基於意見」,「太寬泛」或「尋求外部資源」,我真的很掙扎。無論如何,它在這裏是無關緊要的。 – Olaf
看來你需要適當的知識。我的建議是去C的權威書籍清單。 –