X年前为了搞懂C语言,决定好好找本书来学习。
但手头的C语言实体书,除了学完又忘了的谭版C程序,就只有学校发的但从来没碰过的C语言圣经英文版的影印版,所以就选它了。
读了一会儿,又觉得英文版如果光看一遍,印象不深,恐怕很快就会忘记,于是决定做中文的笔记(翻译)。
当时虽然很长一段时间都全部投入到这本书上了,但现在看来这是最正确的决定,有限的时间和生命,就应该花在读好书上面。
第一章 介绍
本章集中在几个基础上:变量,常量,算术,控制流,函数和输入输出基础。
1.1 开始
#include<stdio.h>
main()
{
printf("hello, world\n");
}
若是在UNIX操作系统上,把上面的内容存为hello.c,然后用
cc hello.c
来编译,编译器会生成一个可执行文件a.out。在命令行输入
a.out
就能打出 hello, world
一个C程序,无论多大,都由函数和变量组成。函数包含着指定要做的计算操作语句,而变量储存计算中用到的值。C函数就像是子程序,和Fortran的函数,Pascal的过程类似。可给函数起任何名字,但 main是特殊的——程序从main开始执行。这意味着每个程序都必须要有一个main。
main通常调用其他函数来帮助完成工作,一些是你自己写的,一些从别人给你提供的库中来的。程序第一行 #include<stdio.h> 告诉编译器去包含标准输入/输出库。标准库在第7章和附录B中介绍。
在函数间传递数据的一个方法是,发起调用的函数提供一系列的值,称为“参数”,给它要调用的函数。函数名后的括号包含参数列表。在第一个例子中,main定义为无参数,因此列表是空的()。
函数的语句包含在大括号 { } 中。main中只有一个语句
printf("hello, world\n");
我们通过名字来调用一个函数,后面跟着括号内的参数列表,所以这里调用了函数printf,参数是 "hello, world\n"。printf是一个库函数,用于输出,在这个例子中输出双引号内的字符串。
双引号间如"hello, world\n"的字符串序列,被称为“字符串”或“字符串常量”。
其中 \n 是C 语言中的“换行符号”,使输出放在下一行的左侧。如果写成
printf("hello, world
");
编译器会报错。一定要用 \n 来输出换行。
printf从来不会自动换行,因此第一个程序可以改写为
#include<stdio.h>
main()
{
printf("hello, ");
printf("world");
printf("\n");
}
注意 \n 只代表一个字符。如 \n 一样的“转义字符”提供了一个通用的,可扩展的机制,以表示难以打出来或者不可见的字符。比如 \t 代表Tab,\b 代表 Backspace,\"代表双引号, \\代表\自己。在2.3节有完整的列表。