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

标签 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];
}

最佳答案

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

还有其他错误,例如

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

关于c - 在函数中使用未声明的标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8747280/

相关文章:

C - 通过指针从函数获取结构 - 段错误

c - 使用Struct和指针的程序中的不确定性(C语言程序)

c - 如果你懂 C 为什么还要学 bash?

c - 变量未初始化

c - 多次scanf打印最大偶数

c - 在 GTK+ 中禁用垂直缩放

c - 在古怪的数据结构中释放后将指针设置为 NULL (C)

c - DRY 如何与 "Separation of concern"和 "One function, one task"组合?

c - 为什么free不释放内存?

c++ - 什么事情(或在什么情况下)可以使 C++ 比 C 慢?