第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语言深度解剖》学习笔记之函数的更多相关文章

  1. C语言深度解剖读书笔记(6.函数的核心)

    对于本节的函数内容其实就没什么难点了,但是对于函数这节又涉及到了顺序点的问题,我觉得可以还是忽略吧. 本节知识点: 1.函数中的顺序点:f(k,k++);  这样的问题大多跟编译器有关,不要去刻意追求 ...

  2. C语言深度解剖读书笔记

    开始本节学习笔记之前,先说几句题外话.其实对于C语言深度解剖这本书来说,看完了有一段时间了,一直没有时间来写这篇博客.正巧还刚刚看完了国嵌唐老师的C语言视频,觉得两者是异曲同工,所以就把两者一起记录下 ...

  3. 【转】 C语言深度解剖读书笔记(1.关键字的秘密)

    本文出处:http://blog.csdn.net/mbh_1991/article/details/10149805 开始本节学习笔记之前,先说几句题外话.其实对于C语言深度解剖这本书来说,看完了有 ...

  4. c语言深度解剖(笔记)

    1.1最宽恒大量的关键字----auto 函数内部变量,限制作用域为这个 1.2.1最快的关键字---- register函数. 关键字请求编译器尽可能的将变量存在 CPU 内部寄存器中 1.2.2使 ...

  5. haskell学习笔记_函数

    一开始学习函数式编程语言就被告知函数式编程语言是一种“定义式”的语言,而不是一种命令式的语言,在学习haskell的函数语法时,此感觉更加强烈,haskell的函数定义倾向于一种类似C++里面的swi ...

  6. R语言与机器学习学习笔记

    人工神经网络(ANN),简称神经网络,是一种模仿生物神经网络的结构和功能的数学模型或计算模型.神经网络由大量的人工神经元联结进行计算.大多数情况下人工神经网络能在外界信息的基础上改变内部结构,是一种自 ...

  7. R语言与显著性检验学习笔记

    R语言与显著性检验学习笔记 一.何为显著性检验 显著性检验的思想十分的简单,就是认为小概率事件不可能发生.虽然概率论中我们一直强调小概率事件必然发生,但显著性检验还是相信了小概率事件在我做的这一次检验 ...

  8. Matlab学习笔记 figure函数

    Matlab学习笔记 figure函数 matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象.每一个这样的窗口都有一些属性,例如窗口的尺寸.位置,等等.下面一一介绍它们. ...

  9. matlab学习笔记 bsxfun函数

    matlab学习笔记 bsxfun函数 最近总是遇到 bsxfun这个函数,前几次因为无关紧要只是大概看了一下函数体去对比结果,今天再一次遇见了这个函数,想想还是有必要掌握的,遂查了些资料总结如下. ...

  10. go语言,golang学习笔记4 用beego跑一个web应用

    go语言,golang学习笔记4 用beego跑一个web应用 首页 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/ 更新的命令是加个 -u 参数,g ...

随机推荐

  1. ubuntu 已安装 post-installation 脚本 返回错误状态 1

    1.$ sudo mv /var/lib/dpkg/info /var/lib/dpkg/info_old //现将info文件夹更名 2.$ sudo mkdir /var/lib/dpkg/inf ...

  2. python模拟浏览器文件上传,csrf放行

    服务器端视图函数 from django.shortcuts import render,HttpResponse from django.views.decorators.csrf import c ...

  3. hibernate 注解使用

    实体类声明,需要引用 import javax.persistence.Entity; import javax.persistence.Table; @Entity @Table(name=&quo ...

  4. 关于python的字典操作

    字典和列表的区别: 列表是有序的 字典是无序的 字典使用{}定义 字典使用键值对存储数据,键值对之间使用 “   ,”分隔 键 key 是索引 值 value 是数据 键和值之间使用  “  :”分隔 ...

  5. find()和find_all()的具体使用

    在我们学会了BeautifulSoup库的用法后,我们就可以使用这个库对HTML进行解析,从网页中提取我们需要的内容. 在BeautifulSoup 文档里,find().find_all()两者的定 ...

  6. drf作业01

    api\urls from django.conf.urls import url from . import views urlpatterns = [ url(r'^cars/$',views.C ...

  7. 学习Python笔记---列表简介

    列表: 列表由一系列按特定顺序排列的元素组成.你可以创建包涵字母表中所有字母.数字0-9或所有家庭成员姓名的列表:也可以将任何东西加入列表中,其中的元素之间可以没有任何关系. 列表 在Python中, ...

  8. redis jedis存储对象简单操作,map list 自定义对象

    安装好redis,进行了基本的操作.包括对map list 和自定义对象的基本操作.笔记都在代码注释里,直接上代码. private Jedis jedis; @Before public void ...

  9. hdu 1671&& poj 3630 (trie 树应用)

    Phone List Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 25280   Accepted: 7678 Descr ...

  10. 利用CSS使footer固定在页面底部

    1.HTML基本结构 <!DOCTYPEhtml> <htmlxmlns="http://www.w3.org/1999/xhtml"> <headr ...