基于过程的程序设计反映的是事务在计算机中的实现方式,需要把实际中的步骤依次用程序编写出来,并给问题设计合适的数据结构。
基于过程的思想由两部分组成:
- 对数据的描述,即数据结构。
数据相当于问题对象在计算机中的表述。
- 对 *** 作的描述,即算法(函数)。
算法相当于具体步骤在计算中的实现。
在基于过程的程序设计中,程序 = 数据结构 + 算法 。
算法的设计步骤:
- 自然语言
- 流程图
- 伪代码
- 计算机语言
C++程序的组成部分:
- 预处理指令,例:
#include
- 全局声明,例:
using namespace std;
- 函数,例:
int main(){}
C++语句:
- 声明语句,例:
int a, b; using namespace std;
- 执行语句,例:
for, while, continue, i = 2, cout << i, #include
- 空语句,例:
;
- 复合语句,使用 “{ }” 将多个单独语句括起来,组成一个语句。
一个函数的函数体可以视为一条复合语句。
程序结构:
- 选择结构(分支结构):if、 ? : (条件运算符)、switch
- 循环结构:for、while
函数分类:
- 库函数
- 用户函数:无参函数,有参函数。
函数组成部分:类型名、函数名、形参列表(非必要)、执行体。
函数的返回值:
- 通过return返回;
- 返回值类型由函数类型决定
函数重载与函数模板:
- 函数重载:同一个算法解决不同类型的输入时,可以不改变函数类型、不改变函数名称,通过改变参数个数、参数类型或参数顺序来实现同一个接口不同调用。
- 函数模板:当两个函数函数类型相同、参数个数与参数顺序相同,仅参数类型不同时(如
int max(int, int)
和double max(double, double)
),可以使用函数模板来避免多次编写(上述可以写为template
。, T max(T, T)
局部变量和全局变量:
- 局部变量:仅在某复合语句内有效的变量,如:函数声明中的参数名(作用范围仅在声明中)、函数的形参(作用范围在该函数的复合语句内)、函数(包括main函数)中定义的变量(作用域是从定义处到该函数结束)等。
- 全局变量:定义于函数体外也称外部变量,作用域是从定义到该文件尾。
数据除了有数据类型外还有存储期,存储期是指变量在内存中的存在周期。
存储期可以分为静态存储期和动态存储期。
存储期与数据的存储类别有关,基本的存储类别有以下四种:
- 自动的(auto),定义函数的局部变量时,如果不额外使用关键词(或使用
auto
)对其声明,则默认为动态分配存储空间。该类型参数一般在当前函数运行结束后自动释放存储空间。
- 静态的(static),在定义函数内的局部变量时使用关键词
static
对其声明,将变量定义为静态局部变量。该类型变量在当前函数结束后不释放存储空间保留当前值且下次调用时不会对其执行赋初值 *** 作,虽然静态局部变量在整个程序执行期间都存在(定义后),但其它函数不能访问。
- 寄存器的(register),定义变量时使用关键词
register
进行声明。该类型变量存储于CPU的寄存器中,该类型变量的存取速度远高于内存中的变量(如auto、static)。
- 外部的(extern),使用关键词
extern
对变量进行声明(而非定义)。该定义作用为:1、有时会在变量定义处之前调用变量,因此可以先对变量进行声明(此时变量还不存在),再在后文对变量进行定义;2、使用其他程序源文件中的变量时,可以先在当前文件中声明,在两个程序源文件编译链接后可以扩展被定义变量的作用域(但定义为static的变量无法被别的文件通过extern引用)。
1.cpp:
int a;
int func1(){
extern char c;
static int b;
....
}
int func2(){
....
}
char c;
static double d;//默认值为0
2.cpp
extern int a;
extern double d;//无效
/*
此时:
a的作用域为1.cpp和2.cpp;
b的作用域为func1,且b的值一直保存至func1结束;
c的作用域为func1及从定义c处到1.cpp结束;
d的作用域为定义d后到1.cpp结束,2.cpp无法正常调用d。
*/
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)