昨日从C#转入C,初学C语言,到函数这里时,碰到许多迷惑的地方。应该可以给许多初学者带来收获吧?如果没有麻烦编辑大大移至新手区。谢谢!

main()
{
      printf("%d",pr());
      getch();     

int pr()
{
     printf("one");
     return 0;

若改成以下便出错:

main()
{
      pr();
      getch();     

void pr()
{
     printf("one");
}

而正确的调用要在pr();前加一个void pr();或将该函数移至主函数前。

根据书上所描述:

1、如果被调函数的返回值是整型或字符型时,可以不对被调用函数作说明(终于明白为什么有那么多过程喜欢用int作为修饰符(说明符)),而直接调用。这时系统将自动对被调函数返回值按整数处理。

2、当被调函数的函数定义出现在主调函数前,主调函数也可以不对函数进行说明。

3、在所欲哦函数定义之前,对函数外预先说明各个函数的类型。(我理解没错的话,类似全局变量?)

 

那么我提出以下几点疑惑,首先必须声明的是,我是抱着学习的态度,如果不慎说错误解,我希望能与你们愉快讨论、讨教。

1、如果按照上面所描述,C语言执行过程是……函数过程a->函数过程b->main>函数过程d。其中d过程还未执行到。但a与b已经预先执行,或别的什么的。理解正确?

2、为什么要如此麻烦呢?如果上面的理论正确,主函数似乎没有什么作用,为什么不首个函数作为主函数?如果不成立,那么为何mian前的函数过程不需要说明,而后的却需要如此一步?

3、函数的调用有什么规则?(能否麻烦知晓的朋友给个链接或说明,求学者万分感谢。)

4、最后一个问题,是否有函数重载(C#)?我尝试过,不知是代码编写错误还是为何,结果出错。

以上问题,是个人的疑惑,提出来,只是为了求一个答案,由于首页人气比较旺,也考虑到这些问题的回答或许可以给一些初学者一些启示。真心感谢回复的人,也真心希望回复的内容通俗易懂,原谅我们是菜鸟,只因为我们还无法飞翔。