失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 编写C语言程序经常要用很多函数 怎样定义自己的函数?为什么要定义函数 不麻烦吗?

编写C语言程序经常要用很多函数 怎样定义自己的函数?为什么要定义函数 不麻烦吗?

时间:2024-06-24 15:51:13

相关推荐

编写C语言程序经常要用很多函数 怎样定义自己的函数?为什么要定义函数 不麻烦吗?

可以把一个函数看作是一块积木,各种各样的积木才能堆积成复杂的建筑。只有几种积木,能完成的建筑太有限了,如果能够自己造各种各样的积木,再复杂的建筑也能完成。

C语言函数的结构是固定的

在偶之前的文章里介绍过,C语言作为编程语言,是一种形式语言,具有固定的格式结构和符号:

返回值类型函数名(参数列表)

{

语句列表

}

注意函数名在相应可见域内要保持唯一性,例如,在main函数所在文件里定义的函数名不能也为main。再啰嗦一下main函数,主要是因为它是默认的入口函数,比较特殊。

OldStyleC的风格的main函数定义写成main(){…}形式,不写返回值类型也不写参数列表。OldStyleC规定不写返回值类型就表示返回int型,不写参数列表就表示参数类型和个数没有明确指出。这种宽松的规定会导致很多复杂的Bug产生,现在的C也保持了这种写法的兼容,但是鉴于它可能会产生bug,还是不要这样写。其实系统在调用main函数时是传参数的,所以main函数最标准的形式应该是intmain(intargc,char*argv[]),这种参数传递在linux下使用起来非常方便,以后用到了再详细解释。C标准也规定了intmain(void)这种形式,如果不使用系统传进来的两个参数也可以写成这种形式。但除了这两种形式之外,以其它形式定义main函数都是错误的或不可移植的。

自定义函数

在了解了自定义函数的一些限制后,很容易就可以写出如下代码。下面的代码中,大家定义了printA函数,它的参数为空,也没有返回值,仅仅是打印出一个字母“A”。

大家在codeblocks里执行它,发现程序在控制台中打印出了字母A。

关于codeblocks的安装和使用,可点击偶的主页,查看相关文章。

以后如果想打印A,只需要执行printA函数就可以了。更进一步的,大家自己定义的printA函数也可以当做系统函数(例如)一样嵌套使用,请看如下代码:

大家又新定义了一个函数print2A,它的功能就是在控制台打印两个A。在codeblocks里执行,发现与预期一致。

体会

从上面的简单例子中,可以总结出以下信息:

同一个函数可以调用多次。可以用一个函数去调用另一个函数,第二个函数可以去调用第三个函数。调用自定义的函数,是通过大家取的名字调用的,例如main函数中调用print2A();函数可以使代码更简洁,原本打印两个A需要两行代码,现在只需要print2A一行就可以了。

你可能会说,偶定义print2A就用了5行啊,哪里简洁了。可是,以后只要遇到需要打印两个A的地方,偶都可以调用print2A,如果有10个地方需要打印两个A呢?另外,如果有一天,偶想在打印两个A的时候不换行,那偶只需要修改printA,把里面的“\n”删掉就可以了,而不用去找那10个需要打印两个A的地方逐个修改。

读代码和读文章不一样,按从上到下从左到右的顺序读代码未必是最好的。比如上面的例子,按顺序应该是先看printA再看print2A再看main。不过,如果换一个角度,按代码的执行顺序来读也许会更好:

因为main是入口函数,所以第一句要执行的就是print2A函数,那它是什么功能呢?于是目光移到print2A函数,它的第一句是printA函数,于是进入printA函数。奥,知道了print2A先要打印一个A,然后又要执行printA函数,又打印了一个A。这下知道了,main函数里的第一句要打印两个A。

实际上,在很多大型项目中,要熟悉它的代码结构,第一件事往往就是找到入口函数。

欢迎在评论区一起讨论,质疑。文章都是手打原创,每天最浅显的介绍C语言、linux等嵌入式开发,喜欢偶的文章就关注一波吧,可以看到最新更新和之前的文章哦。

编写C语言程序经常要用很多函数 怎样定义自己的函数?为什么要定义函数 不麻烦吗? – 网络

如果觉得《编写C语言程序经常要用很多函数 怎样定义自己的函数?为什么要定义函数 不麻烦吗?》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。