[英]Use of undeclared identifier in function
编译该代码时,我得到“使用未声明的标识符'数据'”。 如您所见,问题在于add_student函数无法“查看”学生数组。
怎样才能正常工作?
#include <stdio.h>
typedef struct {
char *name;
int age;
char *sex;
int class;
}student;
void add_student(int, char*, int, char*, int);
int main (int argc, const char * argv[])
{
student data[5];
add_student(5, "Mery", 3, "female", 8);
return 0;
}
void add_student(int sequence, char *name, int age, char *sex, int class) {
strcpy(data[sequence].name, name);
data[sequence].age[13];
strcpy(data[sequence].sex, sex);
data[sequence].class[2];
}
解决此问题的最干净方法是将data
作为附加参数传递给add_student()
。
还有其他错误,例如
5
作为sequence
的值,然后用它索引data
; name
和sex
字段分配内存,因此使用strcpy()
是不正确的; data[sequence].age[13]
和data[sequence].class[2]
无效C。 data
在main()
的范围内,而您试图在add_student()
的范围内使用它。 您有两种选择:
data
置于全局范围内,即,将其声明置于任何函数之外。 data
作为参数传递到add_student()
中。 我通常更喜欢后者,但是两者都有用例。 执行第一个选项将消除传递数组长度的需要,如果将其作为参数传递,则必须这样做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.