我正在阅读“C 语言编程”这本书,并在第 10 章中找到了这样一个示例:
#include <stdio.h>
void test (int *int_pointer)
{
*int_pointer = 100;
}
int main (void)
{
void test (int *int_pointer);
int i = 50, *p = &i;
printf ("Before the call to test i = %i\n", i);
test (p);
printf ("After the call to test i = %i\n", i);
return 0;
}
我理解这个例子,但我不理解 main
中的 void test (int *int_pointer);
行。为什么我要重新定义test
的签名呢?这是惯用的 C 语言吗?
最佳答案
它绝对不是惯用的 C,尽管它是完全有效的(多个声明是可以的,多个定义不是)。这是不必要的,因此没有它代码仍然可以完美运行。
如果有的话,也许作者是故意的
void test (int *int_pointer);
int main (void) {
...
}
如果函数定义放在 main ()
之后。
关于c - 函数内部的函数声明——为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29746768/