2
所以,我得到了一個函數,我聲明瞭一個已經填充的結構,並且還想聲明一個新的函數。當我在頂部聲明新函數時,它的工作原理是,當我在逗號(,)之後的同一行上聲明它時,它可以工作,但它不起作用。任何解釋?提前致謝。爲什麼我不能在函數中第二次聲明結構?
void CFilter(float avgprofit, int lines)
{
//client goodclient[MAX_CLIENT]; THIS WOULD COMPILE
client client[MAX_CLIENT], goodclient[MAX_CLIENT]; // THIS COMPILES
//client goodclient[MAX_CLIENT]; THIS WOULDN'T COMPILE
int i, amount = 0;
float userprofit;
for (i = 0; i <= lines; i++) {
userprofit = client[i].loses - client[i].wins;
if (userprofit >= avgprofit) {
client[i].goodclient = 1;
} else {
client[i].goodclient = 0;
}
}
}
當你有下一行的'goodclient',你是否從前一行刪除它?目前還不清楚。順便說一句,請避免使用與其類型相同的名稱作爲變量。充其量:混亂,最糟糕的是:錯誤。 –
*爲什麼我不能在函數中第二次聲明結構?*因爲你不能。它實際上是一個*定義*,它不能被複制。然而,一個重複的*聲明(例如函數原型或外部變量)可以 - 只要它們全都相同。 –
用大寫字母開始類型的好主意 - 然後可以告訴它們不同於變量 –