自学C语言第七天正式进入函数的学习。最大的感受是——函数写好了主函数就轻松了改代码的时候只需要动被调函数主函数那边几乎不用动太高效了。今天的内容是函数从定义到调用、声明、传参、递归调用还有函数和数组的结合信息量不小但学起来没有之前循环嵌套那么痛苦反而越学越兴奋。先说说函数到底是个啥。通俗点说函数就是把一段有特定功能的代码打包起来起个名字需要的时候喊一声这个名字就行。比如你写了一个判断素数的功能封装成函数之后主函数里只需要调用它不用再把判断逻辑从头写一遍。而且更重要的是——如果判断逻辑需要修改只需要在函数体里改一处所有调用它的地方都会自动生效。函数的基本结构返回值类型 函数名(形参列表){// 函数体return 返回值;}返回值就是函数算完之后送出来的结果比如判断素数返回1或0求和返回总和。函数名要见名知意比如is_prime、get_sum、print_star这种一看就知道干嘛的。形参是函数执行需要用到的数据放在括号里多个参数用逗号隔开。void是一个特殊类型表示“没有返回值”。如果函数只是打印东西而不需要返回数据返回值类型就写void函数体里可以不写return或者只写一个return;用来提前结束。函数的调用很简单函数名(实参)。实参就是实际传给函数的值要和形参的数据类型一致或者兼容。学到这里我开始理解为什么说函数能“降低耦合性、减少重复代码”了。耦合性这个词听起来挺抽象其实就是代码之间的依赖程度。如果所有逻辑都写在main函数里改一个地方可能会影响好几个不相关的功能牵一发动全身。而把功能拆成独立的函数每个函数各司其职主函数只负责“调度”改的时候只需要改对应的那个函数就行了。我今天的真实感受是写一个排序功能把排序逻辑封装成函数之后主函数里只需要传数组和长度进去剩下的全交给函数搞定。如果以后想从冒泡排序改成选择排序只需要改函数体里面的实现主函数那边的调用代码一行都不用动。这种“改一处顶十处”的感觉之前从来没有体会过。
自学C语言第七天:函数真是个好东西,改一处顶十处
自学C语言第七天正式进入函数的学习。最大的感受是——函数写好了主函数就轻松了改代码的时候只需要动被调函数主函数那边几乎不用动太高效了。今天的内容是函数从定义到调用、声明、传参、递归调用还有函数和数组的结合信息量不小但学起来没有之前循环嵌套那么痛苦反而越学越兴奋。先说说函数到底是个啥。通俗点说函数就是把一段有特定功能的代码打包起来起个名字需要的时候喊一声这个名字就行。比如你写了一个判断素数的功能封装成函数之后主函数里只需要调用它不用再把判断逻辑从头写一遍。而且更重要的是——如果判断逻辑需要修改只需要在函数体里改一处所有调用它的地方都会自动生效。函数的基本结构返回值类型 函数名(形参列表){// 函数体return 返回值;}返回值就是函数算完之后送出来的结果比如判断素数返回1或0求和返回总和。函数名要见名知意比如is_prime、get_sum、print_star这种一看就知道干嘛的。形参是函数执行需要用到的数据放在括号里多个参数用逗号隔开。void是一个特殊类型表示“没有返回值”。如果函数只是打印东西而不需要返回数据返回值类型就写void函数体里可以不写return或者只写一个return;用来提前结束。函数的调用很简单函数名(实参)。实参就是实际传给函数的值要和形参的数据类型一致或者兼容。学到这里我开始理解为什么说函数能“降低耦合性、减少重复代码”了。耦合性这个词听起来挺抽象其实就是代码之间的依赖程度。如果所有逻辑都写在main函数里改一个地方可能会影响好几个不相关的功能牵一发动全身。而把功能拆成独立的函数每个函数各司其职主函数只负责“调度”改的时候只需要改对应的那个函数就行了。我今天的真实感受是写一个排序功能把排序逻辑封装成函数之后主函数里只需要传数组和长度进去剩下的全交给函数搞定。如果以后想从冒泡排序改成选择排序只需要改函数体里面的实现主函数那边的调用代码一行都不用动。这种“改一处顶十处”的感觉之前从来没有体会过。