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',你是否从前一行删除它?目前还不清楚。顺便说一句,请避免使用与其类型相同的名称作为变量。充其量:混乱,最糟糕的是:错误。 –
*为什么我不能在函数中第二次声明结构?*因为你不能。它实际上是一个*定义*,它不能被复制。然而,一个重复的*声明(例如函数原型或外部变量)可以 - 只要它们全都相同。 –
用大写字母开始类型的好主意 - 然后可以告诉它们不同于变量 –