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余佳源 第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统. ...
随机推荐
- 配置Statspack
配置Statspack 配置前需要了解3个内容. 1.创建Statspack模式使用的密码. 2.Statspack使用的默认表空间. 3.Statspack使用的临时表空间. Create Tabl ...
- 解决Eclipse中编辑xml文件的智能提示问题,最简单的是第二种方法。
Eclipse for Android xml 文件代码自动提示功能,介绍Eclipse 编辑器中实现xml 文件代码自动智能提示功能,解决eclipse 代码提示失效.eclipse 不能自动提示. ...
- uvalive 5721 Activation (概率dp+方程)
题目链接:http://vjudge.net/problem/viewProblem.action?id=24999 主要思想就是解方程的思想. 二维dp应该很容易想到,就是当前位置加队伍长度. dp ...
- linux之umask函数解析
[lingyun@localhost umask_1]$ vim umask.c + umask.c ...
- 由问题引出的fsck命令
博客停了两天,今天打开linux虚拟机,突然间报错了,顿时心中一喜(是吗?),当时看了下错误说明,好像有关于时间的问题(某个时间是未来时间)..然后我就去兴匆匆的修改系统时间,重启...唉,没作用.只 ...
- Websocket 与代理服务器如何交互? How HTML5 Web Sockets Interact With Proxy Servers
How HTML5 Web Sockets Interact With Proxy Servers Posted by Peter Lubberson Mar 16, 2010 With the re ...
- matplotlib入门--1(条形图, 直方图, 盒须图, 饼图)
作图首先要进行数据的输入,matplotlib包只提供作图相关功能,本身并没有数据读入.输出函数,针对各种试验或统计文本数据输入可以使用numpy提供的数据输入函数. # -*- coding: gb ...
- Android模拟器genymotion安装与eclipse 插件安装
推荐一款Android模拟器"Genymotion",有点速度快,占用资源少,可整合eclipse.闲话少谈,看安装步骤. 1.下载地址:https://www.genymotio ...
- android.os.NetworkOnMainThreadException 在4.0之后谷歌强制要求连接网络不能在主线程进行访问
谷歌在4.0系统以后就禁止在主线程中进行网络访问了,原因是: 主线程是负责UI的响应,如果在主线程进行网络访问,超过5秒的话就会引发强制关闭, 所以这种耗时的操作不能放在主线程里.放在子线程里,而子线 ...
- poi简单案例
//poi api 操作 public static void main(String[] args) { // TODO Auto-generated method stub // 创建一个工作 ...