《C和指针》读书笔记(1)
来源:互联网 发布:淘宝网中老年女上装 编辑:程序博客网 时间:2024/06/06 01:14
声明:该读书笔记摘抄自《C和指针》——Kenneth A.Reek (著) 徐波(译)。为了克服自己走马观花,提高阅读和学习效率,决定将自己在读书过程中遇到的一些知识点加以摘抄和总结备忘,在此感谢原书作者和翻译。
一、ANSI C标准之“三字母词”
三字母词就是三个字符的序列合起来表示另一个字符。ANSI标准并没有规定C环境使用的字符集,但是C编译器所使用的字符集必须包括某些特定的字符,如果你使用的字符集缺少某些字符,可以使用三字母词替代。三字母词以两个“?”开头,后面再接一个字符,例如 :
??( [ ??) ] ??< {
??> } ??/ \ ??- ~
??! | ??= # ??' ^
在linux gcc下验证时发现,gcc编译器默认关闭了三字母词功能,使用-trigraphs可以打开该功能。例如:printf("Delete all the files(are you sure ??) \n"); (注:该例直接引用原文示例)。若没有加编译选项-trigraphs,编译器会提示“忽略了三字母词”,并且输出结果为Delete all the files(are you sure ??) ;若加上-trigraphs,则打印结果为Delete all the files(are you sure ],可以看到??)已被转换为 ] 。
同时,上述九个三字母词中的??/ 要注意一下,例:printf("Delete all the files(are you sure ??/\n"); (注:sure 后面跟了一个三字母词??/ ,然后又跟了一个换行符\n),gcc编译时加上编译选项-trigraphs,打印结果则为Delete all the files(are you sure \n,此时因为三字母词??/被转换为了反斜杠 \ ,而在ANSI C 标准中,两个反斜杠会被识别为转义字符一个反斜杠,此时,换行符\n失效。
最后,同时对两个问号或者只对第二个问号使用转义字符\?可以避免三字母词。注意:只对第一个问号转义无效,输出仍然是三字母词,如例所示:
例1:printf("Delete all the files(are you sure \?\?/\n"); 即两个问号都转义,加上编译选项-trigraphs,输出结果为Delete all the files(are you sure ??/
例2:printf("Delete all the files(are you sure ?\?/\n");即只转义第二个问号,加上编译选项-trigraphs,输出结果也是Delete all the files(are you sure ??/
例3:printf("Delete all the files(are you sure \??/\n");即只转义第一个问号,加上编译选项-trigraphs,输出结果却是Delete all the files(are you sure \
二、ANSI C标准之转义字符,转义字符使某些无法打印的字符得以表达
\? 表示一个? ,在书写连续多个?时使用,防止后接被解释为三字母词
\\ 表示一个反斜杠, 防止后接字符被解释为转义字符
\v 垂直制表符 ,换行并缩进前一个对象的宽度
\" 表示一个字符串内部的双引号
\' 表示一个字符串内部的单引号
\b 退格,例:printf("B\n"); 结果是B不会被输出
\ddd ddd代表1~3个八进制数字,表示该八进制数字代表的字符,注意:若该八进制数值超过字符定义范围,则结果是未定义的
\xddd ddd代表1~3个16进制数字,表示该16进制数字代表的字符,注意:若该16进制数值超过字符定义范围,则结果是未定义的
三、ASNI C之注释
1、以 /* 开始,并以 */ 结束,中间不允许注释嵌套;
2、所有的注释在预处理阶段会被预处理器拿掉,并以一个空格取代;因此,注释可以出现于任何空格可以出现的地方,例如:int /*comtent*/ x = 0;
以上为第一章和第二章总结,未完待续。。。。。
- 《C和指针》读书笔记(1)
- 《C和指针》读书笔记(1)
- C和指针读书笔记 -1
- 《C和指针》读书笔记1
- <C和指针----读书笔记1>
- 读书笔记:C和指针1
- 《C和指针》 读书笔记
- 《C和指针》读书笔记
- 《C和指针》读书笔记
- 读书笔记---C和指针
- C和指针读书笔记
- C和指针 读书笔记
- C和指针 - 读书笔记
- 《C和指针》读书笔记
- 《C和指针》读书笔记
- 读书笔记 C和指针
- 《C和指针》读书笔记
- 《C和指针》-读书笔记
- jdk环境变量的配置
- 图片上下滚动特效
- 算法导论 1.2-2
- 深入理解Java虚拟机读书笔记之:第6章 Java class文件
- BlackBerry 10使用Google TTS做中文文本朗读,开发语言C++ Qt Cascade
- 《C和指针》读书笔记(1)
- 基于MAXSCRIPT的模型导出插件技术
- 编辑距离 poj_3356
- 波分复用
- Quartz学习(七)--Spring整合Quartz(JobDetailBean方式)
- ACM菜鸟大牛和教主的区别 (by Roba)
- 归并排序
- C++设计模式实现--单例
- android:layout_gravity 和 android:gravity 的区别