在函数中使用未声明的标识符

时间:2012-01-05 17:55:16

标签: c

当我编译该代码时,我得到“使用未声明的标识符'数据'”。正如您所看到的,问题是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];
}

2 个答案:

答案 0 :(得分:1)

解决此问题的最简单方法是将data作为附加参数传递给add_student()

还有其他错误,例如

  1. 5作为sequence的值传递,然后使用它来索引data;
  2. strcpy()的使用不正确,因为您尚未为namesex字段分配内存;
  3. 表达式data[sequence].age[13]data[sequence].class[2]无效C.

答案 1 :(得分:0)

data属于main(),您尝试在add_student()范围内使用它。您有两种选择:

  1. data置于全局范围内,即将其声明置于任何函数之外。
  2. data作为参数传递给add_student()
  3. 我通常更喜欢后者,但两者都有用例。执行第一个选项将消除传递数组长度的需要,如果将其作为参数传递,则必须执行此操作。