简介

本书以例子的形式去描述各个模块,每一章节完整描述一两个接口的实现。

对这些例子的描述,以一种名为 文学程序 的形式给出

文学程序 旨在弱化描述程序内容时语法规则的束缚 ,从而以最适于理解的顺序展示出代码。
文学程序还可以有助于逐点对程序进行描述。什么意思呢?
其实就是在对书中代码元素打上标签,并且这个标签里还可以指示这个代码元素在书中哪一页,这样就方便阅读。
书中也给出了一个例子:

例子:一个double程序的实现
功能:检测输入中相邻的相同单词

定义根代码块来实现double 尖括号 后面带一个恒等于号(因为我输入法打不出来就写个“三”)

//下面根代码块的标签设置为程序的文件名 3表示double.c这个程序中的代码块所在的页码
//includes data prototypes functions分别是include部分 数据 函数原型 函数实现 四个元素
<double.c 3>三<includes 4><data 4><prototypes 4><functions 3>

有了这一块定义,其他文学程序中要用到double.c代码块就可以直接提取整个程序

{....<double.c 3>三....
}

他这里<function 3>代表的就是double.c中main函数代码块

<functions 3>三
int main(int argc, char *argv[]) {int i;for (i = 1; i < argc; i++) {FILE *fp = fopen(argv[i], "r");if (fp == NULL) {fprintf(stderr, "%s: can't open '%s' (%s)\n",argv[0], argv[i], strerror(errno));return EXIT_FAILURE;} else {doubleword(argv[i], fp);fclose(fp);}}if (argc == 1) doubleword(NULL, stdin);return EXIT_SUCCESS;}

接下来是include部分

<includes 4>三#include <stdio.h>#include <stdlib.h>#include <errno.h>

<functions 3>还可以包含其他函数代码块 可以追加上去
注意它在 <functions 3>+三 此处的+号 就是用于表示将下面的代码块追加到<functions 3>所表示的main函数末尾

<functions 3>+三int getword(FILE *fp, char *buf, int size) {int c;c = getc(fp);<scan forward to a nonspace character or EOF 6><copy the word into buf[0..size-1] 7>if (c != EOF)ungetc(c, fp);return <found a word? 5>;}

下面是prototypes部分 该部分和include部分一样 在文学程序中 可以放置在任意部分 但是尽量靠近实现处(对C语言语法规则的让步)

<prototypes 4>int getword(FILE *, char *, int);

下面是data部分 代表数据/变量 可以看到这块还有个<scan forword to a nonspace character or EOF 5>三
这一段也被打了标签 只要是打了标签的就可以被抽取使用

<data 4>三int linenum;<scan forword to a nonspace character or EOF 5>三for( ; c != EOF && isspace(c); c = getc(fp))if ( c == '\n' )linenum++;

文学程序的基本概念就是这样,总的来说就是让代码更容易阅读一点。
代码放在编辑器中,可以利用IDE的功能做函数跳转,变量跳转等。但是在书上就无法实现。
文学程序就使得这种情况下阅读代码更人性化。首先将不同性质的代码块分类,给予标签设置。同时给出标签所在的页码,读者可以更快的定位过去。

(读书笔记)C语言 接口与实现0 --- 简介相关推荐

  1. 读书笔记程序员的自我修养 0

    读书笔记<<程序员的自我修养>> 0 为什么要读这本书? 可能因为自己是读硬件的缘故,对于编程,我总是尝试的了解各种表象的下面发生了什么事情.而困扰了我的许多问题,在这本书上都 ...

  2. 【读书笔记】语言基础- Lua语言入门(一)

    目录 注:本系列为<Lua程序设计-第4版> 的读书笔记,其中的见解有不完善的地方,可以在评论区指出,原版请看图书 Lua运行环境 一. 使用Lua语言解释器运行Lua语言:(下面的实例以 ...

  3. c语言字母表关键字,读书笔记-C语言关键字

    001 关键字 C语言一共32个关键字 1. 声明和定义 在开始认识关键字前,必须要明白什么是声明,什么事定义: 定义:(编译器)创建一个对象,为这个对象分配一段内存并给他取上一个名字.在一个作用域内 ...

  4. 《C#图解教程》读书笔记之六:接口和转换

    本篇已收录至<C#图解教程>读书笔记目录贴,点击访问该目录可获取更多内容. 一.接口那点事儿 (1)什么是接口? 一组函数成员而未实现的引用类型.只有类和结构能实现接口. (2)从ICom ...

  5. R语言ggplot2移除图例_读书笔记:R语言绘图—ggplot2

    这次给大家带来的是R语言绘图神器-ggplot2绘图包,根据Hadley的说法,这个包的核心思想,是来源于 Leland Wilkinson<The Grammar of Graphics> ...

  6. [读书笔记]C语言函数调用过程

    *** 本文是<老码识途>第一章的读书笔记 *** 函数调用 例子代码如下所示: int Add(int x, int y) {int sum;sum = x + y;return sum ...

  7. 【Python 自然语言处理 第二版】读书笔记1:语言处理与Python

    文章目录 前言 语言处理与Python 一.语言计算:文本和单词 1.NLTK入门 (1)安装(nltk.nltk.book) (2)搜索文本 (3)词汇计数 2.列表与字符串 (1)列表操作 (2) ...

  8. Python 百天读书笔记 | Python语言进阶 16-20day

    Python语言进阶 重要知识点 生成式(推导式)的用法 prices = {'AAPL': 191.88,'GOOG': 1186.96,'IBM': 149.24,'ORCL': 48.44,'A ...

  9. 读书笔记-C语言程序设计-西安电子科技大学出版社-王娟勤-【未完待续】

    C语言程序设计 王娟勤 西安电子科技大学出版社 ISBN-9787560636702 自建索引, 仅供参考, 以备后查 九.位运算 C语言提供6种基本位运算功能:位取反(单目运算).位与.位或.位异或 ...

最新文章

  1. 关闭浏览器当前页面:Ctrl+W
  2. Sperner定理及其证明
  3. bat从数组中找出相同数字并删除_找到所有数组中消失的数字
  4. Docker精华问答:Docker与虚拟机的区别?| 技术头条
  5. linux dhcp客户端配置文件,各个版本DHCP配置文件的整理
  6. java反射技术_java反射技术,逆向开发必备技能
  7. 异常Exception(Java)
  8. [恢]hdu 2042
  9. 检测SqlServer服务器CPU是否瓶颈
  10. Python OpenCV 美女换装,图像处理取经之旅第 19 天
  11. 软件测试面试题之自动化测试题大合集(上)
  12. Odoo-----在Form视图中添加Chatter
  13. html5 模仿语音聊天气泡,HTML5实现对话气泡动画方法
  14. win10 系统锁屏壁纸的目录
  15. 鸿蒙系统分享,鸿蒙系统的启动流程学习分享
  16. elementui去掉表格所有边框
  17. Android相机开发和遇到的坑
  18. linuxoracle图形界面无法跳出_Linux 7图形化安装Oracle或者其他软件,打不开图形界面的问题 | 信春哥,系统稳,闭眼上线不回滚!...
  19. Kali安装中文输入法ibus
  20. 菜鸡のAxios拙见

热门文章

  1. VSCode JAVA运行设置
  2. HZ_WM向同仁新年问好!猪年快乐!
  3. 阿贝云使用感受 2019-05-09
  4. gps坐标 转 省市区
  5. 一种基于激光雷达的自动驾驶技术路线
  6. 申请国外专利有哪些好处?
  7. Linux PCI总线-PCI空间
  8. 【软件分析/静态程序分析学习笔记】2.中间表示(Intermediate Representation)
  9. 【MySQL | 进阶篇】07、全局锁、表级锁、行级锁
  10. 不会吧?都2021年了,还有人觉得考研英语简单!?