《Pointers On C》读书笔记(第一章 快速上手)
1.C语言是一种自由格式的程序设计语言,没有规则要求我们必须如何书写语句。然而,如果我们在编写程序时能够遵守一些约定还是非常值得的,它可以使代码更加容易阅读和修改。另外,预处理命令有较为严格的规则。
2.要从逻辑上删除一段代码,最好使用预处理命令,例如:
#if 0
statements
#endif
3.C语言中所有传递给函数的参数都是按值传递的。
4.NUL和NULL的区别:
NUL是ASCII字符集中'\0'字符的名字,其字节模式为全0。NUL是作为字符串终止符,本身并不被看作是字符串的一部分。另外,并不存在预定义的符号NUL,如果你想在程序中使用它而不是字符常量‘\0',那么,必须自行定义。
NULL指一个其值为0的指针,符号NULL一般在头文件<stdio.h>、<ios.h>或<windef.h>中定义。在笔者使用的编程环境(Mingw)中,在<windef.h>中找到如下定义:
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void*)0)
#endif
#endif
关于NULL的更多疑问,可以参考《C FAQ》第五章。
5.由于scanf函数的实现原理,所有标量参数的前面必须加上一个"&"符号。数组参数前面不需要加上"&"符号,但即使加上一个"&"符号也没有什么不对。使用所有格式码(%c除外)时,输入值前面的空白(空格、制表符、换行符等)会被跳过,输入值后面的空白表示该值的结束。另外,在使用scanf函数格式码时,注意其与printf函数格式码的区别。
6.先看代码:
int ch;
while((ch = getchar()) != EOF && ch != '\n')
putchar(ch);
为什么变量ch被声明为整型?
这是因为EOF是一个整型值,它的位数比字符类型要多,把ch声明为整型可以防止从输入读取的字符意外地被解释为EOF。但同时,这也意味着接收字符的ch必须足够大,足以容纳EOF。其值在头文件<stdio.h>(摘自Mingw)中有定义:
/* Returned by various functions on end of file condition or error. */
#define EOF (-1)
《Pointers On C》读书笔记(第一章 快速上手)的更多相关文章
- 《C和指针》读书笔记——第一章 快速上手
1.注释代码可以用: #if 0 statements #endif 2.参数被声明为const,表明函数将不会修改函数调用者的所传递的这个参数. 3.scanf("%d",&am ...
- 《疯狂Java:突破程序员基本功的16课》读书笔记-第一章 数组与内存控制
很早以前就听过李刚老师的疯狂java系列很不错,所以最近找一本拿来拜读,再此做下读书笔记,促进更好的消化. 使用Java数组之前必须先对数组对象进行初始化.当数组的所有元素都被分配了合适的内存空间,并 ...
- 《css3实战》读书笔记 第一章 基于CSS需求而编写的HTML.
笔记说明 <CSS3实战手册第3版(影印版)>可以消除Web设计工作的痛苦,并且带给你:HTML--重新入门.如果你是HTML新手,你会学到如何以CSS友好的方式进行基本页面构造.若你是H ...
- .net架构设计读书笔记--第一章 基础
第一章 基础 第一节 软件架构与软件架构师 简单的说软件架构即是为客户构建一个软件系统.架构师随便软件架构应运而生,架构师是一个角色. 2000年9月ANSI和IEEE发布了<密集性软件架构建 ...
- 《深入理解计算机系统》(CSAPP)读书笔记 —— 第一章 计算机系统漫游
本章通过跟踪hello程序的生命周期来开始对计算机系统进行学习.一个源程序从它被程序员创建开始,到在系统上运行,输出简单的消息,然后终止.我们将沿着这个程序的生命周期,简要地介绍一些逐步出现的关键概念 ...
- Getting Started With Hazelcast 读书笔记(第一章)
第一章:数据集群的演化与 早期的服务器架构 显然,应用是可扩展的,但是由于是集中式服务器,随着数据库性能达到极限,再想扩展就变得极端困难,于是出现了缓存. 缓存显然再次提升了可扩展性,减轻了数据 ...
- C缺陷与陷阱----读书笔记---第一章
第一章:词法陷阱 编译器中负责将程序分解为一个一个符号的部分,一般称为“词法分析器”.例如,对于语句: if ( x == big ) big = x ; 它的第一个符号是C语言关键字if,紧接着下一 ...
- 《C++ Primer》读书笔记 第一章
读<C++ Primer>才知道,自己对C++知之甚少... 写个博客记录下自己C++的成长,只是读书笔记,不是对<C++ Primer>知识点的总结,而是对自己在书上看到的以 ...
- [spark 快速大数据分析读书笔记] 第一章 导论
[序言] Spark 基于内存的基本类型 (primitive)为一些应用程序带来了 100 倍的性能提升.Spark 允许用户程序将数据加载到 集群内存中用于反复查询,非常适用于大数据和机器学习. ...
随机推荐
- Oracle基本代码学习
/*------------Orcale函数----------------*/ 1.字符函数 LOWER()小写UPPER()大写INITCAP()把第一个字母大写CONCAT()字符串的连接(也可 ...
- zen-Coding的使用
zen-Coding的使用 zen-Coding的使用需要掌握CSS和HTML相关知识.其实只要对CSS的选择器比较熟悉,就可以得用简短的类似于CSS选择器的代码高效的编写出HTML代码.打开Note ...
- Objective-c开发教程--MRC和ARC混编
iOS5.0以后就开始可以使用ARC来代替之前的MRC. 1.ARC中使用MRC的类.方法如下: 在targets的build phases选项下Compile Sources下选择要不使用arc编译 ...
- 获取iOS应用的版本号和app名称
NSDictionary* infoDict =[[NSBundle mainBundle] infoDictionary]; NSString* versionNum =[infoDict obje ...
- 相见恨晚——MarkDown
什么是MarkDown MarkDown是一种轻量级的标记语言 MarkDown使你更加关注文章的内容 MarkDown使文章的排版变得简单直接 什么情景下使用MarkDown 在我们熟悉的githu ...
- git 克隆本地仓库
如果要从本地仓库克隆到另一个地方使用如下命令 git clone d:/SourceRepository d:/DestinationRepository d:/SourceRepository:本地 ...
- java设计模式之 单例模式 Singleton
static 的应用 单例模式 Singleton 单例:保证一个类在系统中最多只创建一个实例. 好处:由于过多创建对象实例,会产生过多的系统垃圾,需要GC频繁回收,由于GC会占用较大的系统资源,所有 ...
- 【java】一维数组循环位移方阵
输出: 左移:7 4 8 9 1 5 4 8 9 1 5 7 8 9 1 5 7 4 9 1 5 7 4 8 1 5 7 4 8 9 5 7 4 8 9 1 右移:5 7 4 8 9 1 1 5 7 ...
- stormzhang的推荐!
欢迎转载,但请务必在明确位置注明出处!http://stormzhang.com/android/2014/07/07/learn-android-from-rookie/ QQ交流群:入群理由请正确 ...
- Oracle EBS-SQL (BOM-7):检查有BOM无工艺路线的子装配件或成品.sql
select msi.segment1, msi.description, msi.item_typefrom inv.mtl_system_items_b msiwher ...