Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.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_Function_Declaration_Definition - Fatal编程技术网

C 函数中标识符列表和参数列表之间的差异?

C 函数中标识符列表和参数列表之间的差异?,c,function,declaration,definition,C,Function,Declaration,Definition,对于此报价: 函数声明器中的标识符列表,它不是 该函数的定义应为空 标识符列表和参数列表之间有什么区别?有人能为这个引用提供一个例子吗?标识符列表仅用于过时的K&R样式函数中。今天编写的新代码永远不会使用它。您可以在此处查看更多详细信息: 是这样的: void func(identifier-list) declaration-list { body } 当他们说它应该是空的时,他们的意思是即使承认古代码的可能性,你也不允许在一个没有定义函数的声明中有这个。例如,这是不允许的: voi

对于此报价:

函数声明器中的标识符列表,它不是 该函数的定义应为空


标识符列表和参数列表之间有什么区别?有人能为这个引用提供一个例子吗?

标识符列表仅用于过时的K&R样式函数中。今天编写的新代码永远不会使用它。您可以在此处查看更多详细信息:

是这样的:

void func(identifier-list)
declaration-list
{
    body
}
当他们说它应该是空的时,他们的意思是即使承认古代码的可能性,你也不允许在一个没有定义函数的声明中有这个。例如,这是不允许的:

void func(x) int x;

标识符列表仅用于过时的K&R样式函数。今天编写的新代码永远不会使用它。您可以在此处查看更多详细信息:

是这样的:

void func(identifier-list)
declaration-list
{
    body
}
当他们说它应该是空的时,他们的意思是即使承认古代码的可能性,你也不允许在一个没有定义函数的声明中有这个。例如,这是不允许的:

void func(x) int x;

没有标识符定义的标识符列表没有说明函数参数的类型。因此,当函数声明不同时是函数定义时,为其指定标识符列表是没有意义的

因此,引用引用引用的限制被使用

这里有一个例子

#include <stdio.h>

void f();

int main(void) 
{
    int x = 10;
    f( x );

    return 0;
}

void f( x ) 
int x;
{
    printf( "x = %d\n", x );
}

使用参数列表时,编译器可以检查函数调用是否向函数传递了有效参数。因此,最好总是使用参数列表而不是标识符列表。

没有标识符定义的标识符列表对函数参数的类型没有任何说明。因此,当函数声明不同时是函数定义时,为其指定标识符列表是没有意义的

因此,引用引用引用的限制被使用

这里有一个例子

#include <stdio.h>

void f();

int main(void) 
{
    int x = 10;
    f( x );

    return 0;
}

void f( x ) 
int x;
{
    printf( "x = %d\n", x );
}


使用参数列表时,编译器可以检查函数调用是否向函数传递了有效参数。因此,最好总是使用参数列表而不是标识符列表。

当您给出标准引号时,指定您使用的文档的哪个部分会很有用。它是6.7.5.3/3我想您可以在这里找到答案。。。这是答案的一半阅读问题。实际上我的文件是C99标准。当你给出标准引号时,指定你使用的文档的哪个部分会很有用。它是6.7.5.3/3我想你可以在这里找到你的答案。。。这是答案的一半阅读问题。实际上我的文件是C99标准。那应该是空的吗?这是相反的开关它们。@Sabrina这很清楚,不是吗?应为空表示括号之间不能有任何内容,因为声明不是定义。所以你不能写void funcx@因此,该报价仅限于旧式。K&R该标准是这样编写的,因为函数声明的语法规则将func视为在括号之间有一个空标识符列表。所以在函数声明中必须允许标识符列表。。。但只有当它们是空的。那应该是空的呢?这是相反的开关它们。@Sabrina这很清楚,不是吗?应为空表示括号之间不能有任何内容,因为声明不是定义。所以你不能写void funcx@因此,该报价仅限于旧式。K&R该标准是这样编写的,因为函数声明的语法规则将func视为在括号之间有一个空标识符列表。所以在函数声明中必须允许标识符列表。。。但前提是它们是空的。