导语
近日,笔者在课业之余阅读了《C和指针(Pointers on C)》 (by Kenneth A.Reek)一书,从中记录了关于C语言的诸多知识点,包括在C语言基础特性的学习过程中没有涉及到的基本方面,以及与指针相关的进阶话题。
由于初次记录过程中有诸多不详细之处,故将其中内容重新整理如下,方便今后查看,也希望能给需要这方面知识但没有足够时间阅读原书的朋友提供一点帮助。(当然,文中只记录了初次学习C语言特性过程中没有过多涉及的内容。基本的语法、数据类型等知识不再进行记录。)
这一部分,是书中内容的前九章,相对较为基础,是C语言基本特性的轻度延伸,故合为一篇,记为基础篇。
目录
Chpt.1 快速上手(讲述C语言程序的编译等基本内容,本文不作记录)
Chpt.2 基本概念
Chpt.3 数据
Chpt.4 语句 (讲解C语言中的基本语句,包括if, for, while等,本文不作记录)
Chpt.5 操作符和表达式
Chpt.6 指针
Chpt.7 函数
Chpt.8 数组
Chpt.9 字符串、字符和字节
下面,进入正式的内容。
Chpt.2 基本概念
1. 关于编程风格:
(1)if, while等语句以及函数名之后的括号从属于之前的内容(即if, while等),而不属于括号中的内容,故应在括号中内容两端留一个空格。如:
if ( a != 3 ) { // .... } while ( 1 ) { // .... } strcmp( dst, src );
1 if ( a != 3 ) 2 { 3 // .... 4 } 5 while ( 1 ) 6 { 7 // .... 8 } 9 strcmp( dst, src );
(2)使用[Tab]而不是空格做好缩进。
(3)绝大多数注释应该成块出现,从而在视觉上更突出。
(4)操作符使用时大多隔以空格,但操作符太多时可以省略部分空格以突出层次。
(5)不同人的代码风格可能略有差别,但尽量始终使用同一种较好的风格。
2. 关于注释
块注释(即/* ... */)不能嵌套使用。因为注释会在第一个/*处结束,导致两个*/之间的内容(包括第二个*/)不再被认为是注释。
3. 关于字符
(1)三字母词:标准C中定义了一些三字母词(trigrph),即三个字符的序列用以表示另一个字符。具体如下:
??( : [
??) : ]
??! : |
??< : {
??> : }
??' : ^
??= : #
??/ : \
??- : ~
也就是说,应当尽量避免两个问号连续出现的情形。出现时,可用“\?”表示“?”
(2)字符串中引号的表示:在字符串中应使用\"表示双引号。
(3)可用\ddd表示八进制下的ddd作为ASCII码所对应的字符,同理\xddd表示十六进制的情况。
Chpt.3 数据
1. 指针变量的声明:
在下面这条语句中,符号‘*’从属于后面的变量名ptr,而非前面的类型名int。因此这条语句的作用是声明了整型指针ptr和整型变量var。
int *ptr, var;