C语言自定义函数的简单问题

刚学c语言,看的《C Primer Plus》
第二章有个练习如果照着书上的例子来是
#include<stdio.h>
void one_three(void);
void two(void);
int main(void)
{
printf("starting now:\n");
one_three();
printf("\n");
two();
printf("\nthree\ndone!\n");
}
void one_three(void)
{
printf("One");
}
void two(void)
{
printf("Two");
}

但是把函数定义放到前面,就省去了2行代码,并且在vs2013能运行,请问这样有问题吗?
#include<stdio.h>
void one_three(void)
{printf("One");
}
void two(void)
{
printf("Two");
}
int main(void)
{
printf("starting now:\n");
one_three();
printf("\n");
two();
printf("\nthree\ndone!\n");
return 0;
}
还有个问题是:我现在不明白最后一句return 0;的作用,不加上这句又对运行毫无影响。

第1个回答  2014-11-04

我想刚刚好回答你这个问题

首先关于函数的问题,你的想法是正确的 定义的函数体在main函数下面是需要先声明的,而处于mian()函数上边的函数,则不用。引用我的课堂笔记给你看看,你那题应该是习题里的第七题对吧


第二个问题关于函数体中的return语句 在什么情况出现

1、用户自定义的函数按有无返回值类型分两种,一般来说,当你定义的函数是以void以外的关键字修饰时,还是要加return语句返回一个值。像int max(a,b)的用户定义的函数中,需要返回一个int型的值给调用他的那个函数,他也是表示一个函数的结束

2、你问题中的return 0;是说主函数内的,加上的目的是告诉程序到这儿已经执行结束了。他下面的语句也不会再执行了。一般来说,有没有都没太大区别,但最好还是写一下,养成好的书写规范习惯 我以前一直不写那句的,现在也在慢慢的改。

好了 回答了这么多 希望能帮到你

第2个回答  2014-11-04
1:由于程序是从main主函数执行的,所以你的方法定义在main后面的函数需要先在main前面声明。
2:你main函数的返回值是int类型的,所以需要返回一个int类型,至于返回几没有关系,定义成void main则不需要返回。
第3个回答  2014-11-04
没有问题,调用的函数放在主函数前面可以省去声明的语句

第二个问题加return 0是因为你的main函数的返回值是int类型 你看你写的是int main()所以最后最好返回一个整数,一般约定main函数运行正常返回0,不过不加这条语句不会有任何影响,只会有警示不会报错