Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C &引用;旧式参数声明;错误_C - Fatal编程技术网

C &引用;旧式参数声明;错误

C &引用;旧式参数声明;错误,c,C,在试图编译代码时,我遇到了两个编译错误,但我找不到真正的问题所在。谁能帮我解释一下吗 error: old-style parameter declarations in prototyped function definition error: 'i' undeclared (first use in this function) 代码: void打印记录(STUREC记录[],整数计数) STUREC记录[ARRAY_MAX]; 整数计数; int i; { printf(“+------

在试图编译代码时,我遇到了两个编译错误,但我找不到真正的问题所在。谁能帮我解释一下吗

error: old-style parameter declarations in prototyped function definition
error: 'i' undeclared (first use in this function)
代码:

void打印记录(STUREC记录[],整数计数)
STUREC记录[ARRAY_MAX];
整数计数;
int i;
{
printf(“+-------------------------------+-----------+-----------++-----------+-----------+-----------+------+\n”);
printf(“学生姓名| ID |测试1 |测试2 |项目1 |项目2 |项目3 |平均|成绩|\n”);
printf(“+-------------------------------+-----------+-----------++-----------+-----------+-----------+------+\n”);
对于(i=0;i
您有

void printRecords (STUREC records[], int count)

STUREC records[ARRAY_MAX];
int count;
int i;
{
但我想你想要:

void printRecords (STUREC records[], int count)
{
    int i;
编辑: 感谢callyalater注意到函数中参数的重新声明…

如果要使用,您需要执行以下操作:

void printRecords(records, count)
    STUREC records[ARRAY_MAX];
    int count;
{
    int i;
    // ... rest of the code ...
}
但这并不是一个好的实践,它会使代码更难阅读。一些编译器甚至已经停止支持这种语法

其他注释/答案是,您在函数体中重新声明(并因此隐藏)了函数参数,但这不是您想要做的(否则实际上会丢失传入的参数)

如果定义这样的函数:

void fxn(int num) {
    int num;
    num = num;
}
num
指的是什么:参数还是局部变量

要么这样做:

void printRecords(records, count)
    STUREC records[ARRAY_MAX];
    int count;
{
    int i;
    // ... rest of the code ...
}
void printRecords(STUREC records[], int count)
{
    int i;
    // ... rest of the code ...
}
或者这样做:

void printRecords(records, count)
    STUREC records[ARRAY_MAX];
    int count;
{
    int i;
    // ... rest of the code ...
}
void printRecords(STUREC records[], int count)
{
    int i;
    // ... rest of the code ...
}

但不要试图同时做这两件事或两者兼而有之。

不是针对这个特定的问题,但是如果您碰巧遇到这个错误,请检查您的声明末尾是否遗漏了分号,因为我就是这样做的。

看起来您错放了
{
printRecords函数定义处的括号..开头
{
应该遵循函数参数列表。啊!谢谢大家…现在我收到一个错误,说在我的函数中“printRecords”“count”被重新声明为不同类型的sybole,并带有一个注释,说明我以前的定义在哪里。但是我有
void printRecord(STUREC records[],int count)
后接一个本地声明
int count;
…这是错误代码所指向的两行,但我把它们都放在int,那么错误是指什么呢?另外,
i
不是
printRecords
中的参数,老式函数参数意味着您没有将类型放在函数p中arameter declarations.ah!谢谢大家…现在我得到一个错误,我的函数“printRecords”“count”被重新声明为一种不同类型的sybole,并带有一个注释,说明我以前的定义在哪里。但是我有
void printRecord(STUREC records[],int count)
后面是一个局部声明
int count;
…这是错误代码指向的两行,但我把它们都指向int,那么错误是指什么呢?@mame98您的示例并不像您想象的那样。您将参数重新声明为局部变量,从而隐藏参数并使其无法访问是的,我刚刚把我的{向上移动了,哈哈,它处理好了。我现在有一个错误,说我在printRecords中的计数被重新声明为一个不同的符号…错误指向第98行和第94行。有什么线索吗?@seanncurtis在
{
但在
int i;
之前。请参见我答案中的最后一个示例。哦,我明白了,如果您在()启动该函数时,您不需要在本地声明中声明它?答对了!否则,该函数不知道您正在谈论的是哪一个。非常有意义,谢谢。我现在收到一个错误,我在学习c的4个月内从未见过。它说“error:1d returned exit status”…它没有引用行或任何东西不过。