C primer plus 读书笔记第四章
本章的标题是字符串的格式化输入/输出,重点介绍输入和输出。
本章的第一段示例代码和上一张示例代码很相近,代码就不贴了,新出现的特性是使用了一个数组来存放字符串,C预处理命令和strlen()函数。
下面具体介绍这些概念。
1.字符串
C语言没有为字符串定义专门的变量类型,而是存储在char数组中。
注意:
1.scanf()读取字符串时,会在遇到第一个空白字符串,制表符或者换行符处停止读取。所以使用%s的scanf()只会读取一个单词而非整个句子(C语言一般用gets()来处理一般的字符串)。
2.strlen()和sizeof()区别。sizeof是操作符,不是函数。它后面的()并不是必须的,没有歧意时就不必写上了。sizeof操作符计算的是系统为它后面的变量或类型名分配的空间大小,无论其中是否存储了有用数据。strlen()是库函数,()中必须是字符串指针或字符串常量,它返回的是检测对象中第一 个'\0'前的字符个数,不含'\0'。
2.C预处理器
用法:#define TAXRATE 0.015。在编译程序的时候,0.015会代替所有TAXRATE,这种方式称为编译时代入法。这样定义的常量通常称为明显常量。一般情况下,常量名要大写,这是一个约定俗成的习惯。
C90新增来一种创建符号常量的方法:使用const关键字。例如,const int MONTHS = 12; C语言还可以通过枚举功能创建符号常量,后面再谈。
系统也定义来一些明显常量,例如在头文件limits.h和float.h里就有类似的行:#define INT_MAX +32767。
3.printf()和scanf()
1.printf。格式printf(control-string, item1, item2...); 其中控制字符串包括实际要打印的字符和转换说明。要打印%需要%%。printf()的转换说明修饰符很多而且很强大很灵活。转换的意义在于,它把存储在计算机中的二进制格式的数值转换成一系列字符以便于显示。此处的“转换”可以理解为“翻译”。
4.4.4节重点讲了不匹配的转换,涉及到很多计算机底层知识。特别是参数传递的工作原理:计算机把变量的值放置到堆栈,但是在读取时是根据转换说明符去读取。
另外,printf()返回值是所打印的字符的数目。
2.scanf()。scanf()是print()的逆向操作,它把输入的字符串转换成各种形式:整数,浮点数,字符和字符串。而printf()是把这些形式转换成要在屏幕上显示的文本。scanf()使用指向变量的指针。如果要读取某种基本变量类型的值,在变量名加上一个&;如果读取一个字符串到字符数组,不用&。scanf()返回成功读入项目的个数。
这章内容比较多,特别是细节。没必要全部背下来,以后的实践中再去熟悉。
编程练习和上一章的类似,都是printf()和scanf()的练习。
to be continued...
C primer plus 读书笔记第四章的更多相关文章
- 《Linux内核设计与实现》第八周读书笔记——第四章 进程调度
<Linux内核设计与实现>第八周读书笔记——第四章 进程调度 第4章 进程调度35 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配 ...
- 《Linux内核设计与实现》 第八周读书笔记 第四章 进程调度
20135307 张嘉琪 第八周读书笔记 第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统.只有 ...
- 《Linux内核分析》读书笔记(四章)
<Linux内核分析>读书笔记(四章) 标签(空格分隔): 20135328陈都 第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行 ...
- 4 Visual Effects 视觉效果 读书笔记 第四章
4 Visual Effects 视觉效果 读书笔记 第四章 Well, circles and ovals are good, but how about drawing r ...
- 《Linux内核设计与实现》读书笔记 第四章 进程调度
第四章进程调度 进程调度程序可看做在可运行太进程之间分配有限的处理器时间资源的内核子系统.调度程序是多任务操作系统的基础.通过调度程序的合理调度,系统资源才能最大限度地发挥作用,多进程才会有并发执行的 ...
- 《利用python进行数据分析》读书笔记--第四章 numpy基础:数组和矢量计算
http://www.cnblogs.com/batteryhp/p/5000104.html 第四章 Numpy基础:数组和矢量计算 第一部分:numpy的ndarray:一种多维数组对象 实话说, ...
- Getting Started With Hazelcast 读书笔记(第四章)
第四章 分而治之 在指导了如何进行基本使用之后,又再次进入理论模块. Hazelcast的基本策略就是切片分区,默认是271个片.内置一个 partition table记录那个节点是那个分区,并在h ...
- STL源码剖析读书笔记--第四章--序列式容器
1.什么是序列式容器?什么是关联式容器? 书上给出的解释是,序列式容器中的元素是可序的(可理解为可以按序索引,不管这个索引是像数组一样的随机索引,还是像链表一样的顺序索引),但是元素值在索引顺序的方向 ...
- 《Linux内核设计与实现》读书笔记——第四章
标签(空格分隔): 20135321余佳源 第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统. ...
随机推荐
- java中this关键字和static关键字和super关键字的用法
this关键字 1. this 关键字是类内部当中对自己的一个引用,可以方便类中方法访问自己的属性: 2.可以返回对象的自己这个类的引用,同时还可以在一个构造函数当中调用另一个构造函数(这里面上面有个 ...
- makecert 制作数字证书
在MS的SDK6.0中有个证书生成工具makecert.exe, 你可以使用这个工具来生成测试用的证书. 第一步,生成一个自签名的根证书(issuer,签发者). >makecert -n &q ...
- Solution(项目部署):The server does not support version 3.0 of the J2EE Web module specification
1.错误: 在eclipse中使用run->run on server的时候,选择tomcat6会报错误:The server does not support version 3.0 of t ...
- http请求头响应头大全
转:http://www.jb51.net/article/51951.htm 本文为多篇“HTTP请求头相关文章”及<HTTP权威指南>一书的阅读后个人汇总整理版,以便于理解. 通常HT ...
- ubuntu系统mysql.h no such file or directory
在Ubuntu系统中,你已经安装了mysql,即你使用sudo apt-get install mysql-server mysql-client然而使用C语言访问mysql数据库时,却发现出现了如下 ...
- css行级块级区别总结摘录
一.块级元素:block element 每个块级元素默认占一行高度,一行内添加一个块级元素后无法一般无法添加其他元素(float浮动后除外).两个块级元素连续编辑时,会在页面自动换行显示.块级元素一 ...
- 初涉JavaScript模式 (10) : 函数 【进阶用法】
写在前面 不知不觉写到第10篇了.这篇写起来很忐忑,终于和高级搭上边了(呵呵),这篇我们 主要 说一下 JS 方法的部分高级用法(我知道的),笔者水平有限,难免有错.废话不多少,进入正文. 初始化 我 ...
- 在linux下将当前目录文件全部小写含目录名
ls | sed -n '/[A-Z]/s/.*/mv & \L&/e' 公司以前用的windows server 服务器 文件大小写都一样. 新迁移到centos 服务器上,发现 ...
- 兄弟连王牌PHP课程送三重豪礼啦!
兄弟连PHP就业办课程送三重豪礼啦! 惊喜一:报名9月23日班级,保障薪资直涨1000元! 9月报名学习,春节后就业,正是企业招聘的黄金高峰期,一年中拿到高薪最好的时节! 惊喜二:兄弟连云课堂900元 ...
- php回调函数callback函数实例
<?php // 将文本中的年份增加一年. $text = "April fools day is 04/01/2002\n"; $text.= "Last chr ...