重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
跟你打个比方吧,就像文件夹的子文件夹和父文件夹一样。子函数与父函数是函数嵌套里的,括号外面的是括号里面的父函数,里面是外面的子函数。
成都服务器托管,成都创新互联公司提供包括服务器租用、德阳电信服务器托管、带宽租用、云主机、机柜租用、主机租用托管、CDN网站加速、域名注册等业务的一体化完整服务。电话咨询:13518219792
先回答下第一个问题,子函数的实现方法可以放在使用它的主函数或者其它子函数后面,但是你的定义一定要在使用它之前;不然编译器怎么知道你用的函数square是什么,这就是我们经常包含头文件的一个目的,头文件是一些函数定义或者预编译命令。
修改是在#includestdio.h后面加
int square(int num);
第二个问题:num是在main定义是可以在main作用域内直接使用,或者当做参数传递给子函数,你的问题num为什么可以在子函数中用,首先你子函数的num并非main里的num只是你把他们名字写成一样了;main里num是通过值传递给子函数的num,实际他们两个num的内存地址是不一样的,你子函数换个名字去理解一下。
C语言中想要使用一个自定义函数一般有以下三个步骤:
一、函数声明:
在开发大型软件都是采用多人合作开发,一般一个人负责实现几个功能,这些功能都是通过函数来实现。这总情况下我们一般采用函数声明和定义分开模式。即函数声明放在头文件里。需要用到时包含相应的头文件及方法库即可,库函数就是这种模式。函数的声明主要是说明函数的名称以及其所需要的参数类型,参数可以只写类型不写变量名,函数定义是需要变量名。
二、函数定义
这一步主要是写函数功能的实现方法,代码块,核心部分。比步可以在函数声明时进行,即声明同时定义方法。不过这种方式不适合分享,因为你不一定想分享你的代码,也许只想分享这个功能。不管哪种方法,在调用函数之前必须进行函数声明。
三、函数调用
经过以上两步,我们的函数已经完成。接下来就是使用函数,使用前先搞清楚函数需要有哪些参数,参数一定要传入合适的类型。第二函数有没有返回值,返回值的含义。我们可以通过返回值判断函数的执行情况,一般函数最好有返回值。想清楚后直接调用函数即可。
要知道 C语言是由MAIN函数开始也由它结束。
每调用一次分函数,只要运行完毕后就会回到调用分函数的地方继续往后执行。
C语言主要靠函数调用和return在函数之间切换,很难做到在多层调用中直接返回主函数。虽然goto语句可以无条件跳转,但是必须在同一个函数中使用。
因此解决的方法也是用一个特殊的值作为需要返回的标志,然后在两层调用函数中都遇到该值就返回,但是这个方法也有两个前提:
1)你的两个子函数都是由返回值的函数
2)你选择的特殊值和函数正常的返回的取值不会冲突,不会引起二义性。
同样的操作,C++可以通过异常处理的throw和catch来实现从子函数的子函数直接返回主函数,汇编语言可以用jmp指令跳转实现这个需求。因此建议你的这个问题还是用C++ 的异常去解决比较好。
主函数:即程序的入口函数,通常是有main字样的函数为主函数。程序执行的时候最先调用的是这个函数。
子函数:即用户可以自定义的函数,其实可以写到主函数中,但阅读等很费劲,所以很多代码提到子函数中实现,让代码可读性很强,更精练。
因此,主函数必须有,且可以调用子函数,这是编程语言决定的。子函数可有可没有,子函数可以被主函数调用,也可以被其他子函数调用。
主函数:
返回值类型
main(参数)
int
main()
{
aaa();
}
子函数
void
aaa()
{
}