我对C语言中的结构概念相当新,并遇到了一个问题。我已经找到了这里发布的任何类似问题,但找不到任何问题。我想要做的是将一个结构数组中的变量作为参数传递给函数,如下所示:
struct Student
{
float average;
int ID;
int grades[5];
char firstName[20], lastName[20];
};
void main(void)
{
struct Student sTable[10];
float maxAverage(float sTable[].average)
{
int i;
float max = 0;
for(i = 0;i < 10; ++i)
{
if(sTable[i].value > max)
{
max += sTable[i].value;
}
}
return max;
}
printf("%f",maxAverage(sTable[].average));
}
答案 0 :(得分:2)
这里有一些问题。
你想要这样的代码:
struct Student
{
float average;
int ID;
int grades[5];
char firstName[20], lastName[20];
};
float maxAverage(struct Student sTable[])
{
int i;
float max = 0;
for(i = 0;i < 10; ++i)
{
if(sTable[i].value > max)
{
max += sTable[i].average;
}
}
return max;
}
int main(void)
{
struct Student sTable[10];
//initialize sTable
printf("%f", maxAverage(sTable));
return 0;
}
请注意,您缺少sTable
的初始化。
你真的应该将数组的长度作为参数传递给maxAverage
。这样就可以更灵活地使用任何长度的数组。
答案 1 :(得分:0)
首先,你不能在另一个函数中声明或定义一个函数,所以在maxAverage
之外移动main
(顺便提一下,应该返回int
,而不是{{} 1}})。其次,给定一个结构数组,你不能只是自动地从结构的某个字段创建一个值数组;如果你愿意,你必须手动声明一个单独的数组(在这种情况下)void
,然后逐个复制float
个字段。一种更简单的方法是简单地将average
本身传递给sTable
,并使maxAverage
仅对数组中结构的maxAverage
字段进行操作。