我正在尝试编写一个打印学生信息的程序 但Code :: Blocks说:
错误:形式参数1的类型不完整。 错误:' displayStudentInformation'的冲突类型 这就是代码。
#include <stdio.h>
void displayStudentInformation(struct student stu);
struct student{
int id;
char *firstName;
char *lastName;
float gpa;
};
int main()
{
struct student stu1;
stu1.id = 101;
stu1.firstName = "Ali";
stu1.lastName = "Alavi";
stu1.gpa = 18;
displayStudentInformation(stu1);
return 0;
}
void displayStudentInformation(struct student stu)
{
printf("Student information :\n");
printf("ID : %d",stu.id);
printf("First Name : %s",stu.firstName);
printf("Last Name :%s",stu.lastName);
printf("GPA : %.2f",stu.gpa);
printf("\n");
}
答案 0 :(得分:0)
在函数原型之前定义结构:
struct student {
int id;
char *firstName;
char *lastName;
float gpa;
};
void displayStudentInformation(struct student stu);
现在结构已知,可以在函数原型中使用。
请注意,您可以typedef
结构,以便每次要声明struct student
类型的变量时都不必编写student
:
typedef struct student {
int id;
char *firstName;
char *lastName;
float gpa;
} student;
void displayStudentInformation(student stu);
由于某些原因你的问题也被标记为“c ++”(?)我在这里要提到的是,在C ++中,你不需要typedef
它。即使没有student
,您也可以使用struct student
代替typedef
。
如果您打算使用C ++而不是C,那么我还应该提一下,建议对字符串使用std::string
而不是char*
。请注意,与C相比,C ++是一种非常不同的语言。如果您当前的目标或任务是学习C,那么不要只使用C ++编译器编译C代码。请使用C编译器。如果您使用C ++编译器,您可以(并且可能会)最终获得有效C ++但无效C的代码。