当我编译该代码时,我得到“使用未声明的标识符'数据'”。正如您所看到的,问题是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];
}
答案 0 :(得分:1)
解决此问题的最简单方法是将data
作为附加参数传递给add_student()
。
还有其他错误,例如
5
作为sequence
的值传递,然后使用它来索引data
; strcpy()
的使用不正确,因为您尚未为name
和sex
字段分配内存; data[sequence].age[13]
和data[sequence].class[2]
无效C. 答案 1 :(得分:0)
data
属于main()
,您尝试在add_student()
范围内使用它。您有两种选择:
data
置于全局范围内,即将其声明置于任何函数之外。data
作为参数传递给add_student()
。我通常更喜欢后者,但两者都有用例。执行第一个选项将消除传递数组长度的需要,如果将其作为参数传递,则必须执行此操作。