(读书笔记)C语言 接口与实现0 --- 简介
简介
本书以例子的形式去描述各个模块,每一章节完整描述一两个接口的实现。
对这些例子的描述,以一种名为 文学程序 的形式给出
文学程序 旨在弱化描述程序内容时语法规则的束缚 ,从而以最适于理解的顺序展示出代码。
文学程序还可以有助于逐点对程序进行描述。什么意思呢?
其实就是在对书中代码元素打上标签,并且这个标签里还可以指示这个代码元素在书中哪一页,这样就方便阅读。
书中也给出了一个例子:
例子:一个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 --- 简介相关推荐
- 读书笔记程序员的自我修养 0
读书笔记<<程序员的自我修养>> 0 为什么要读这本书? 可能因为自己是读硬件的缘故,对于编程,我总是尝试的了解各种表象的下面发生了什么事情.而困扰了我的许多问题,在这本书上都 ...
- 【读书笔记】语言基础- Lua语言入门(一)
目录 注:本系列为<Lua程序设计-第4版> 的读书笔记,其中的见解有不完善的地方,可以在评论区指出,原版请看图书 Lua运行环境 一. 使用Lua语言解释器运行Lua语言:(下面的实例以 ...
- c语言字母表关键字,读书笔记-C语言关键字
001 关键字 C语言一共32个关键字 1. 声明和定义 在开始认识关键字前,必须要明白什么是声明,什么事定义: 定义:(编译器)创建一个对象,为这个对象分配一段内存并给他取上一个名字.在一个作用域内 ...
- 《C#图解教程》读书笔记之六:接口和转换
本篇已收录至<C#图解教程>读书笔记目录贴,点击访问该目录可获取更多内容. 一.接口那点事儿 (1)什么是接口? 一组函数成员而未实现的引用类型.只有类和结构能实现接口. (2)从ICom ...
- R语言ggplot2移除图例_读书笔记:R语言绘图—ggplot2
这次给大家带来的是R语言绘图神器-ggplot2绘图包,根据Hadley的说法,这个包的核心思想,是来源于 Leland Wilkinson<The Grammar of Graphics> ...
- [读书笔记]C语言函数调用过程
*** 本文是<老码识途>第一章的读书笔记 *** 函数调用 例子代码如下所示: int Add(int x, int y) {int sum;sum = x + y;return sum ...
- 【Python 自然语言处理 第二版】读书笔记1:语言处理与Python
文章目录 前言 语言处理与Python 一.语言计算:文本和单词 1.NLTK入门 (1)安装(nltk.nltk.book) (2)搜索文本 (3)词汇计数 2.列表与字符串 (1)列表操作 (2) ...
- Python 百天读书笔记 | Python语言进阶 16-20day
Python语言进阶 重要知识点 生成式(推导式)的用法 prices = {'AAPL': 191.88,'GOOG': 1186.96,'IBM': 149.24,'ORCL': 48.44,'A ...
- 读书笔记-C语言程序设计-西安电子科技大学出版社-王娟勤-【未完待续】
C语言程序设计 王娟勤 西安电子科技大学出版社 ISBN-9787560636702 自建索引, 仅供参考, 以备后查 九.位运算 C语言提供6种基本位运算功能:位取反(单目运算).位与.位或.位异或 ...
最新文章
- 关闭浏览器当前页面:Ctrl+W
- Sperner定理及其证明
- bat从数组中找出相同数字并删除_找到所有数组中消失的数字
- Docker精华问答:Docker与虚拟机的区别?| 技术头条
- linux dhcp客户端配置文件,各个版本DHCP配置文件的整理
- java反射技术_java反射技术,逆向开发必备技能
- 异常Exception(Java)
- [恢]hdu 2042
- 检测SqlServer服务器CPU是否瓶颈
- Python OpenCV 美女换装,图像处理取经之旅第 19 天
- 软件测试面试题之自动化测试题大合集(上)
- Odoo-----在Form视图中添加Chatter
- html5 模仿语音聊天气泡,HTML5实现对话气泡动画方法
- win10 系统锁屏壁纸的目录
- 鸿蒙系统分享,鸿蒙系统的启动流程学习分享
- elementui去掉表格所有边框
- Android相机开发和遇到的坑
- linuxoracle图形界面无法跳出_Linux 7图形化安装Oracle或者其他软件,打不开图形界面的问题 | 信春哥,系统稳,闭眼上线不回滚!...
- Kali安装中文输入法ibus
- 菜鸡のAxios拙见