繁体   English   中英

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

[英]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()

还有其他错误,例如

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

datamain()的范围内,而您试图在add_student()的范围内使用它。 您有两种选择:

  1. data置于全局范围内,即,将其声明置于任何函数之外。
  2. data作为参数传递到add_student()中。

我通常更喜欢后者,但是两者都有用例。 执行第一个选项将消除传递数组长度的需要,如果将其作为参数传递,则必须这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM