Chapter 1 - A Tutorial Introduction
一个C程序,无论它的大小几何,都由函数与变量组成
1.1 开始
要素 | 作用 |
---|---|
函数 functions | 包含语句(Statement),以指定要执行的计算步骤 |
变量 variables | 储存在计算工程中使用到的值 |
-
函数
mian()
是特殊的,程序将从mian()
函数开始执行,这也意味着每个程序都必须有一个main()
. -
程序第一行的
#include <stdio.h>
告知编译器将标准库的信息包含. -
转义字符串(escape sequence)只表示一个单一的字符,它提供了一个用于表示
har-to-type
字符的通用拓展机制.
1.2 变量与算数表达式
-
在C言语中,一个变量必须在被声明(declared)之后才能被使用。变量的声明指定了变量的属性(properties).
-
由大括号(braces)围起的多个语句称为复合语句(compound statement),简称为语句块。语句块的结束无需和简单语句一样使用分号
;
.
1.3 For语句
for
语句是一种循环,是对于while
语句的普遍化(generalization).- 递增步骤(increment step)将在语句块执行完成后被执行.
for
通常适用于初始化语句和递增语句为简单语句并且逻辑相关的循环.
1.4 符号常量
- 让大量的幻数(magic number),如200、300充斥于程序中是很坏的习惯.
- 语句
#define [name] [replacement list]
可以使符号常量(symbolic constant)或符号名称(symbolic name)被替换为特定的字符串.
1.5 字符输入与输出
- 文本流(text stream)是被分割为数行的字符序列.
- EOF (End Of File) 是由标准库所定义的整形数.
- 计算行即意味着计算换行符(newline character).
- 由
||
(or)与&&
(and)所连接的表达式由左向右结合,被称为短路运算. - 标准库提供了以下的简单函数用于读写字符:
getchar()
用于从文本流中读取下一个输入字符并返回字符的值purchar(int)
用于打印指定值的对应字符
1.6 数组
int arrays-name[int length]
声明一个长度为length的数组,下标由0开始.- 在最初的
if
语句与最后的else
语句间,可以存在数个else if
语句.
1.7 函数
-
函数的定义(defination)有如下形式:
return-type function-name(parameter-declarations, if any) { declarations statements }
-
函数的声明(declaration)被称为函数原型(prototype),必须与函数的定义与用法一致,有如下形式:
return-type function-name(parameter-declarations) /* 元素名是可选的(optional),这意味着它可以省略 */
-
函数的参数(parameters)所使用的变量名作用于函数内部.
-
函数并不必要返回一个值,
return
语句本身便可以如}
一般控制程序终止(即使它不返回有效的值). -
函数应当向环境返回它的运行状态.
1.8 实际参数(Arguments) - 传值调用
- 被传入调用函数实参的值由一个临时变量(temporary variables)而不是原始变量提供.
- 引用调用(Call by reference)指被调用的程序例与原始的实参相关联,而不是一个局部拷贝.
- 为了在调用程序例时修改变量值,调用者需要提供变量所处的内存地址(指针).被调用的函数也必须将该形参声明为一个指针并且通过它访问(access)原函数的值.
- 当一个数组的标识符被用作实参,被传递给函数的值是数组起始位置的地址,而不是数组的拷贝.