求解:关于函数定义、函数声明之间的区别以及函数调用和函数定义在程序中的顺序对程序运行是种什么样的影响
发表在C语言图书答疑 2018-04-25 悬赏:5 学分 《C语言从入门到精通(第3版)》第9章 函数 132页-133页
是否精华
版块置顶:

例7.1计算任意两个整数的积

int mul(int x,int y);

{

int z;

z=x*y;

return z;

}

main()

{

int a,b,c;

printf("please input a and b:\n");

scanf("%d,%d",&a,&b);

c=mul(a,b);

printf("the product is:%d",c);

}

我是个新手,接触C语言不到1个星期,结合以上一段代码,我具体谈谈问题;

这一段代码应该是截取的一部分代码,因为缺失了头文件,所以我也没添加,应该是原封不动的抄了上来;

对于这段代码,从开始int mul到第一个大括号结束应该是自定义函数mul的函数定义,其中大括号内是函数体;

而第二段中c=mul(a,b)是函数调用,那么第一段中的int z是否就是函数声明,如果不是,那么在这段编码中函数声明具体在哪里;


在书中,我发现有一些编码的函数定义在前面,而有些函数定义在后面,这样有区别么,如果有,请稍加说明;

另外,在C中说到程序由主调函数开始执行,是种什么样的执行,是否是执行主函数后的第一个函数体;


问题就是这样的,如果表达有误,请各位指出!另外来指点的各位,我希望回答富有确切性,如果你同样不确定,就不要回答了!

分享到:
精彩评论 4
李木子
学分:2954 LV11
2018-04-26
沙发

你好:

(1)你的代码抄错了,第一句int mul(int x,int y);多加了一个分号

(2)VC6中不加头文件是能够运行出结果的

(3)mul函数确实是自定义的函数,第二段c=mul(a,b)是函数的调用,但是int z不是函数的声明,它是自定义的mul函数用到的整型变量,而int z;这句是定义一个整型变量。

(4)关于函数的声明问题:如果自定义的函数在主函数(main()函数)前面,那么可以不需要声明函数,如果自定义的函数在主函数(main()函数)的后面,就需要在主函数前面声明这个函数

(5)C语言中,程序的入口是主函数(main()函数),从这个函数开始执行,也就是从main下面的大括号中的语句一步一步执行

mingricopy1995
学分:147 LV3
2018-04-26
板凳

李木子 发表于2018-04-26 09:35

你好:

(1)你的代码抄错了,第一句int mul(int x,int y);多加了一个分号

(2)VC6中不加头文件是能够运行出结果的

(3)mul函数确实是自定义的函数,第二段c=mul(a,b)是函数的调用,但是int z不是函数的声明,它是自定义的mul函数用到的整型变量,而int z;这句是定义一个整型变量。

(4)关于函数的声明问题:如果自定义的函数在主函数(main()函数)前面,那么可以不需要声明函数,如果自定义的函数在主函数(main()函数)的后面,就需要在主函数前面声明这个函数

(5)C语言中,程序的入口是主函数(main()函数),从这个函数开始执行,也就是从main下面的大括号中的语句一步一步执行

老师,您好:

  大体上我明白了,刚刚也去百度了一下函数声明的具体概念,这两种形态上不同我是知道的,一个是函数,包括了函数体,一个是语句。声明和定义的两句是一样的,但是定义的时候是没有分号的。

  上例中,我是这样理解的,如有错误,请老师指正。

  由主函数开始运行后面的函数体,当执行到调用函数这一句时,根据调用函数的返回值将值储存到mul中,实行调用,调用之后继续执行下一语句。执行完主函数后函数体内的语句后,继续执行向下执行。

  那么,被调函数mul是不是从来没有自主运行过,只是当被调用时执行函数体内的语句,返回其值后才被使用,另外其他被调函数也是同理的吧!

李木子
学分:2954 LV11
2018-04-26
地板

是的

mingricopy1995
学分:147 LV3
2018-04-26
4L

好的,关于这些我明白了,谢谢老师!

首页上一页 1 下一页尾页 4 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照