《C语言深度解剖》学习笔记之函数
第6章 函数
1.编码风格
【规则6-1】每一个函数都必须有注释
【规则6-2】每个函数定义之后以及每个文件结束之后都要加若干个空行
【规则6-3】在一个函数体内,变量定义与函数语句之间要加空行
【规则6-4】逻辑上密切相关的语句之间不加空行
【规则6-5】复杂的函数中,在分支语句,循环语句结束之后需要适当的注释
【规则6-6】不要随意删除别人的代码
【规则6-7】用缩行显示程序结构,缩进量同意使用4个字符
【规则6-8】同层次的代码在同层次的缩进层
【规则6-9】代码行最大长度控制在80个字符以内
【规则6-10】长表达式要在低优先级操作符处划分新行,操作符放在新行之首(以便突出操作符)
if((very_longer_variable1 >= very_longer_variable2)
&&(very_longer_variable3 <= very_longer_variable4)
&&(very_longer_variable5 <= very_longer_variable6))
{
//code
}
【规则6-11】用正确的反义词组命名具有互斥意义的变量或相反动作的函数
【规则6-12】用括号表达操作顺序
【规则6-13】不要编写太复杂的表达式
【规则6-14】不要编写多用途的表达式
【规则6-15】原则上尽量少使用全局变量,因为它的生命周期太长
【规则6-16】参数命名恰当,顺序合理
【规则6-17】如果参数是指针,且仅作输入参数作用,则应在类型前加const,防止指针在函数体内被修改
【规则6-18】不要省略函数的返回类型,如果函数没有返回值,则应声明为 void。如果缺省返回值类型,编译器默认为int
【规则6-19】函数入口处,对函数参数的有效性进行检查
【规则6-20】return语句不可返回指向“栈内存”的“指针
【规则6-21】相同的输入产生相同的输出。尽量避免函数带有记忆功能,少用static局部变量
【规则6-22】数组的大小应该显式声明
2.函数递归
void fun(int i)
{
if (i>)
{
fun(i/);
}
printf("%d\n",i);
}
int main()
{
fun();
return ;
}
上面的递归应该展开为如下的形式:
void fun(int i)
{
if (i>)
{
fun(i/);
if (i/>)
{
fun(i/);
{
}
printf("%d\n",i/);
}
printf("%d\n",i/); }
printf("%d\n",i);
}
《C语言深度解剖》学习笔记之函数的更多相关文章
- C语言深度解剖读书笔记(6.函数的核心)
对于本节的函数内容其实就没什么难点了,但是对于函数这节又涉及到了顺序点的问题,我觉得可以还是忽略吧. 本节知识点: 1.函数中的顺序点:f(k,k++); 这样的问题大多跟编译器有关,不要去刻意追求 ...
- C语言深度解剖读书笔记
开始本节学习笔记之前,先说几句题外话.其实对于C语言深度解剖这本书来说,看完了有一段时间了,一直没有时间来写这篇博客.正巧还刚刚看完了国嵌唐老师的C语言视频,觉得两者是异曲同工,所以就把两者一起记录下 ...
- 【转】 C语言深度解剖读书笔记(1.关键字的秘密)
本文出处:http://blog.csdn.net/mbh_1991/article/details/10149805 开始本节学习笔记之前,先说几句题外话.其实对于C语言深度解剖这本书来说,看完了有 ...
- c语言深度解剖(笔记)
1.1最宽恒大量的关键字----auto 函数内部变量,限制作用域为这个 1.2.1最快的关键字---- register函数. 关键字请求编译器尽可能的将变量存在 CPU 内部寄存器中 1.2.2使 ...
- haskell学习笔记_函数
一开始学习函数式编程语言就被告知函数式编程语言是一种“定义式”的语言,而不是一种命令式的语言,在学习haskell的函数语法时,此感觉更加强烈,haskell的函数定义倾向于一种类似C++里面的swi ...
- R语言与机器学习学习笔记
人工神经网络(ANN),简称神经网络,是一种模仿生物神经网络的结构和功能的数学模型或计算模型.神经网络由大量的人工神经元联结进行计算.大多数情况下人工神经网络能在外界信息的基础上改变内部结构,是一种自 ...
- R语言与显著性检验学习笔记
R语言与显著性检验学习笔记 一.何为显著性检验 显著性检验的思想十分的简单,就是认为小概率事件不可能发生.虽然概率论中我们一直强调小概率事件必然发生,但显著性检验还是相信了小概率事件在我做的这一次检验 ...
- Matlab学习笔记 figure函数
Matlab学习笔记 figure函数 matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象.每一个这样的窗口都有一些属性,例如窗口的尺寸.位置,等等.下面一一介绍它们. ...
- matlab学习笔记 bsxfun函数
matlab学习笔记 bsxfun函数 最近总是遇到 bsxfun这个函数,前几次因为无关紧要只是大概看了一下函数体去对比结果,今天再一次遇见了这个函数,想想还是有必要掌握的,遂查了些资料总结如下. ...
- go语言,golang学习笔记4 用beego跑一个web应用
go语言,golang学习笔记4 用beego跑一个web应用 首页 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/ 更新的命令是加个 -u 参数,g ...
随机推荐
- gitlab上fork别人的代码后更新的2种解决方式
1.解决方式1 首先要先确定一下是否建立了主repo的远程源: git remote -v如果里面只能看到你自己的两个源(fetch 和 push),那就需要添加主repo的源: git remote ...
- 洛谷 P1036 选数【背包型DFS/选or不选】
题目描述 已知 n 个整数 x1,x2,…,xn,以及一个整数 k(k<n).从 n 个整数中任选 k 个整数相加,可分别得到一系列的和.例如当 n=4,k=3,4 个整数分别为 3,7,12, ...
- 发布Qt Widgets桌面应用程序的方法
Qt是一款优秀的跨平台开发框架,它可以在桌面.移动平台以及嵌入式平台上运行.目前Qt 5介绍程序发布的文章帖子比较少.大家又非常想要知道如何发布Qt应用程序,于是我花了一点儿时间介绍一下如何发布Qt桌 ...
- iOS 7: 如何为iPhone 5s编译64位应用
随着iPhone 5S的推出,大家开始关心5S上所使用的64位CPU A7. 除了关心A7的性能以外,大家还会关心一个问题,那就是使用A7的64位系统对应用有没有什么要求.特别是应用开发者,大家都比较 ...
- java如何访问memcache
1 Memcache是什么 Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的 ...
- font-family:黑体;导致css定义全部不起作用
css文件里font-family: "黑体";这句会导致后面的css定义全部不起作用了. 只要把font-family: "黑体"; 改成 font-fami ...
- Python学习笔记(四)Python程序的控制结构
在学习了 Python 的基本数据类型后,我们就要开始接触Python程序的控制结构,了解 Python 是如何使用控制结构来更改程序的执行顺序以满足多样的功能需求.如果有的小伙伴在之前学过C语言,j ...
- 如何实现已发布app的自动更新
要实现app的自动更新,做两件事情就可以搞定 1.获取当前手机中的app版本号 我们可以通过查询mainbundle中的获取CFBundleVersion NSDictionary *infoDict ...
- LintCode刷题笔记-- O(1) Check Power of 2
标签: 位运算 题目: Using O(1) time to check whether an integer n is a power of 2. 解题思路: 这道题是利用位运算判断一个数是不是2 ...
- jQuery图片从下往上滚动效果
在线演示 本地下载