这是一个合适的函数定义吗?

时间:2013-11-16 20:05:00

标签: c struct

我的教授在我们的作业中提供了功能定义,以便我们按照她想要的方式完成作业。她提供的定义是这样的;

void outputStudents(struct student [], int size)

通常她会提供变量的名称,以便进行评分,所以我想确定一下。我是否需要更改声明以包含学生对象的名称,例如

void outputStudents(struct student classroom[], int size)

或者有没有办法按照它的方式访问它?

很抱歉,如果这看起来像一个显而易见的问题,但结构和指针正在抛弃我的循环(没有双关语),所以我想确保在我改变任何东西之前。她有时会犯错,所以很难说我是否只是困惑,或者问题是否有错误。

编辑:好的,谢谢你们。我知道变量可以有任何名称,但就像我提到的那样,通常她会向我们提供确切的函数标题应该说(并且如果我们不加思索地改变它就取下点),用于评分目的,因为她和其他两个TA看了数百个这一周。所以我想确定我没有忽略某些东西。

4 个答案:

答案 0 :(得分:5)

声明中可以省略参数名称(只有类型很重要)。当你实际实现它时,你当然必须命名参数才能使用它。

答案 1 :(得分:2)

参数名称仅在实施时才重要。 在声明中,它们可以被忽略,因为类型是最重要的。 您必须为参数指定一个名称,以便能够使用它。

答案 2 :(得分:1)

原型: (在其他答案中称为声明

void outputStudents(struct student [], int ); //note the ; at end of statement 

不需要包含任何函数参数。但是,(当然)

功能实现 ,(有时也称为定义,有时也称为声明(如果之前没有)原型))

void outputStudents(struct student classroom[], int size)   
{   
    //do stuff here...
}  

始终需要每种类型的参数名称。 (无效除外)

注意: 原型在C中不是必需的,只是该功能 在任何其他函数引用(或调用)之前声明 另请注意: 如果之前没有原型,则定义函数也将作为其声明的。
关于原型是否需要的异常 如果编译器选项设置为标记非原型函数。在这种情况下,将在编译时发出警告。 (如果您的老师/教授明确要求原型,那么他们当然也是必需的:)

答案 3 :(得分:0)

是的,您必须提供struct变量的名称。第二件事,只是为了你的知识,你必须在正式的论证中给出变量的名称。

void outputStudents(struct student classroom[], int size)

void outputStudents(struct student *classroom, int size)

是一样的。