c语言 自定义函数在 main 声明与在main前面声明有什么不同?

#include "stdio.h"
int i = 0;
void add(void)
{
i += 1;
printf("add: %d\n", i);
}
void add_2(void)
{
i = 1;
printf("add_2: %d\n", i);
}
int main(void)
{
printf("%d ",i);
add();
printf("%d ",i);
add_2();
printf("%d ",i);
}
运行结果:
/*
0 add: 1
1 add_2: 1
1
*/


main里面声明自定义函数
#include "stdio.h"
int i = 0;
int main(void)
{
printf("%d",i);
void add(void);
printf("%d",i);
void add_2(void);
printf("%d",i);
}
void add(void)
{
i += 1;
printf("add: %d\n", i);
}
void add_2(void)
{
i = 1;
printf("add_2: %d\n", i);
}
运行结果为:
/*
000
*/
来大神指教

没什么不同,你两种结果不同,只是把声明和调用弄混了。
函数调用前必须声明,这个只是一个说明,并没用调用,也就是运行。
你后面的程序,只是声明了下函数,并没有调用它。
int main(void)
{ void add(void); //声明
void add_2(void);
printf("%d ",i);
add(); //调用
printf("%d ",i);
add_2();
printf("%d ",i);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-03-18

printf("%d",i);
void add(void);
printf("%d",i);
void add_2(void);
printf("%d",i);
这种写法,并没有调用函数,而是函数声明。。。
相似回答