鱼C论坛

 找回密码
 立即注册
查看: 1151|回复: 3

[已解决]初学c 执行顺序疑惑

[复制链接]
发表于 2020-12-22 16:49:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
代码是c primer中的 学习过程中的疑惑

  1. #include <stdio.h>
  2. void butler(void);
  3. int main(void)
  4. {
  5.     printf("I will summon the butler function.\n");
  6.     butler();
  7.     printf("Yes. Bring me some tea and writeable DVD. \n");
  8. };

  9. void butler(void)
  10. {
  11.     printf("You rang,sir?\n");
  12. }
复制代码



这段代码在main上面先声明了butler函数 并设置为空 在main函数体内调用butler这个空函数   执行到这的时候 main里调用的butler()函数 应该是空返回值吧  main函数块结束  再定义butler
代码从上到下执行 main函数第一个运行 这样的话 butler()函数的定义在main函数执行之后 那main函数在执行的时候 buter()函数应该只是声明了 并没有被定义 调用结果应该为空呀  为什么执行结果 main中调用butler() 结果就是main()之外定义butler的结果??

讲的不太明白 主要就是疑惑执行顺序

                               
登录/注册后可看大图


最佳答案
2020-12-22 17:31:23
书里好像有提到过,小甲鱼视频里也讲过,按我的理解就是main是主函数,逐条执行main里所有语句直到主函数结束为止,学习时间长了你就明白怎么回事了.
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-22 17:29:24 | 显示全部楼层
本帖最后由 jackz007 于 2020-12-22 17:32 编辑
  1. #include <stdio.h>

  2. void butler(void);    //  这是函数声明语句,是用来告诉编译器的,不会被执行,之所以有这一句是因为 main() 中调
  3.                       //  用了函数 butler(),而这个函数是在 main() 之后才定义的,如果把 butler() 的函数定
  4.                       //  义提前到 main() 的位置之前,这条语句就彻底没有用了。
  5. int main(void)
  6. {
  7.     printf("I will summon the butler function.\n");          // 第 1 步,打印信息 "I will summon the butler function.\n"
  8.     butler();                                                // 第 2 步,调用函数 butler(),打印信息 "You rang,sir?\n"
  9.     printf("Yes. Bring me some tea and writeable DVD. \n");  // 第 3 步,打印信息"Yes. Bring me some tea and writeable DVD. \n"
  10. };

  11. void butler(void)
  12. {
  13.     printf("You rang,sir?\n");
  14. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-22 17:31:23 | 显示全部楼层    本楼为最佳答案   
书里好像有提到过,小甲鱼视频里也讲过,按我的理解就是main是主函数,逐条执行main里所有语句直到主函数结束为止,学习时间长了你就明白怎么回事了.
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-22 20:25:26 | 显示全部楼层
butler为函数体.我们在c中.程序总是从main函数开始,到main函数结束.
由于程序是自上向下执行.我们在执行main函数时,调用了butler函数体.我们需要让main函数知道,我们有butler这个东西.第一句出现的void butler();相当于声明告知程序,我们定义了一个名为butler的函数体.
当然我们把函数体写在main'函数的上方就不需要声明了.
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-7 12:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表