再学C语言
1.程序设计的步骤
(1)问题分析
(2)设计算法
(3)编写程序
(4)测试
(5)编写程序文档
2.厨师制作菜肴,需要有菜谱,菜谱上一般应说明:
(1)所用原料,指出为了做出顾客所指定的菜肴,应该使用哪些材料;(类似于数据结构)
(2)操作步骤,指出有了这些原料,应按什么样的步骤进行加工,才能做出所需的菜肴。(类似于算法)
3.不要认为只有“计算”的问题才有算法。广义地说,为解决一个问题而采取的方法和步骤,就称为“算法”。例如,描述太极拳动作的图解,就是“太极拳的算法”。一首歌曲的乐谱,也可以称为改歌曲的算法,因为它指定了演奏改歌曲的每个步骤,按照它的规定就能演奏出预订的曲子。
4.算法的特点:
(1)有穷性
(2)确定性
(3)有效性
(4)0个或多个输入
(5)1个或多个输出
5.结构化程序设计方法的基本思路是:把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。
(1)自顶向下
(2)逐步细化
(3)模块化设计
(4)结构化编码
6.常用的常量有以下几种
(1)整型常量
(2)实型变量(十进制小数形式、指数形式)
(3)字符常量(普通字符、转义字符)
(4)字符串常量
(5)符号常量(#define PI 3.1416)
7.变量名实际上是以一个名字代表的一个存储地址。
8.常变量
const int a = 3;
常变量是有名字的不变量,而常量是没有名字的不变量。
9.在计算机高级语言中,用来对变量、符号常量名、函数、数组等命名的有效字符序列,统称为标识符。
10.C语句分为以下5类
(1)控制语句
1. if() ... else ... (条件语句)
2.for()... (循环语句)
3.while()... (循环语句)
4.do... while() (循环语句)
5.continue (结束本次循环语句)
6.break (中止执行switch或循环语句)
7.switch (多分支选择语句)
8.return (从函数返回语句)
9.goto (转向语句)
(2)函数调用语句
(3)表达式语句
(4)空语句
(5)复合语句
可以用{}把一些语句和声明括起来成为复合语句(又称语句块)。
11.关系运算符及其优先次序
(1)<
(2)<=
(3)>
(4)>=
上面四种优先级相同(高)
(5)==
(6)!=
上面二种优先级相同(低)
关系运算符的优先级低于算术运算符
关系运算符的优先级高于赋值运算符
用关系运算符将另个数值或数值表达式连接起来的式子,称关系表达式。
12.逻辑符号和逻辑表达式
(1)&&
(2)||
(3)!
13.在函数内定义的变量是局部变量,而在函数之外定义的变量称为全局变量。全局变量可以为本文件中其它函数所共用,它的有效范围为从定义变量的位置开始到本源文件结束。
14.C的存储类别包括4种:自动的(auto)、静态的(static)、寄存器的(register)、外部的(extern)。
将外部变量的作用域扩展到其他文件
在任一个文件中定义外部变量Num,而在另一文件中,用extern对Num做外部变量声明,即“extern Num”。
15.对变量而言,声明与定义的关系稍微复杂一些。在声明部分出现的变量有两种情况:一种是需要建立存储空间的(如“int a;”),另一种是不需要建立存储空间的(“如extern a;”).前者称为定义性声明,简称定义。后者称为引用性声明。把建立存储空间的声明称定义,而把不建立存储空间的声明称为声明。
16.在需要调用此函数的其他文件中,需要对此函数做声明。在对此函数做声明时,要加关键字extern,表示该函数“是在其他文件中定义的外部函数”。
17.指针是一个地址,而指针变量是存放地址的变量。
程序中有两处出现 pointer_1和pointer_2,两者的含义不同。程序第4行的pointer_1和pointer_2表示定义两个指针变量pointer_1和pointer_2。它们前面的“”只是表示该变量是指针变量,指针变量名是pointer_1和pointer_2。程序最后一行printf函数中的pointer_1和pointer_2则代表指针变量pointer_1和pointer_2所指向的变量,其中的“”表示指向。
屏幕快照 2018-03-25 下午3.34.33.png
18.在输入操作时,数据从文件流向计算机内存,在输出操作时,数据从计算机流向文件。
19.对文件读写之前应该“打开”该文件,在使用结束之后应“关闭”该文件。
所谓“打开”是指为文件建立相应的信息区(用来存放有关文件的信息)和文件缓存区(用来暂时存放输入输出的数据)。
所谓“关闭”是指撤销文件信息区和文件缓存区,使文件指针变量不再指向改文件,显然就无法进行文件的读取了。
20.一定要在对指针应用解除引用运算符(*)之前,将指针初始化为一个确定的、适当的地址。这是关于使用指针的金科玉律。
21.C语言使用预处理器语句#define来实现宏——内联代码的原始实现。这并不是通过传递参数实现的,而是通过文本替换来实现的。
#define SQUARE(X) X*X
b = SQUARE(4+7) 会被替代为4+4*7+7
可以使用括号来进行改进
#define SQUARE(X) ((X)*(X))