结构化程序设计二

+多文件结构
+编译预处理指令
+系统函数
+自定义数据类型
一、C++源程序的多文件结构
+++++



+

可以只声明 不使用





+头文件


二、编译预处理指令

+文件包含指令


+宏定义指令:#define




+条件编译指令



三、几种特殊形式的函数

+带默认形参值




+重载函数



+内联函数
inline



+主函数main
操作系统
执行程序test.exe
test.exe或test
可以将操作系统执行某个程序的过程理解成操作系统调用该程序主函数main的全过程
执行时传递原始数据
主函数main可以定义形参,接收数据:可以定义返回值,将自己的运行状态返回给操作系统




因为Visual Studio同时支持ANSI和Unicode编码 _tmain可以很方便的在两种编码间切换


+递归函数
递推法求N!



递归法求N!





递归函数的执行过程


汉诺塔



四、系统函数

标准C库
C++标准库




getchar

putchar




动态内存分配函数

+命名空间





五、自定义数据类型

+类型定义
为基本数据类型重新命名一个别名
typedef unsigned char AGE;
AGE x;//等价于:unsigned char x;
定义指针类型
typedef int * Ipointer;
Ipointer p1;//等价于:int *p1;
定义数组类型
typedef  char NAME[10];
NAME name1;//等价于:char name1[10];
统一ANSI和UNICODE这2种不同编码的C++演示程序
include 
using namespace std;
define _UNICODE //定义一个空宏_UNICODE
ifdef _UNICODE
typedef wchar_t TCHAR;
else
typedef char TCHAR;
endif
int main()
{
TCHAR ch;//编译时,该语句等价于:wchar_t ch;即Unicode版本
//如果删除第4行空宏_UNICODE定义再编译,则该语句等价于:char ch;即ANSI
//省略....
}
+枚举类型
布尔bool 类型的一个主要特征是其值域只有2个取值,真和假,分别用关键字true和false表示
C++语言可以将值域可枚举的数据定义成新的数据类型,这些数据类型被统称为枚举类型,值域中的每个取值称为一个枚举元素
//定义枚举类型
  enum 枚举类型名 {枚举常量1,枚举常量2,...,枚举常量n};
enum是定义枚举类型的关键字
枚举类型名需符合标识符命名规则
枚举常量是表示各个枚举元素的名称,需符合标识符的命名规则
计算机内部存储枚举型数据时,用整数表示每个枚举常量。默认情况下,枚举常量1=0,枚举常量2=1,.....,枚举常量n=n-1.可以在定义是为枚举常量另行指定其它的值。
//定义一个枚举类型WeekDay
  enum WeekDay {sun,mon,tue,wed,thu,fri,sat};//默认:sun=0,mon=1,...
  enum WeekDay {sun=7,mon=1,tue,wed,thu,fir,sat};、、sun=7,mon=1,tue=2,...
#include <iostream>
using namespace std;
enum WeekDay {sun,mon,tue,wed,thu,fir,sat};//默认:sun=0,mon=1,.....
int main()
{
  enum WeekDay x;//定义1个WeekDay类型的枚举变量x
  x = mon;//为x赋值,mon是枚举常量,内部数值是1
      //注: 枚举变量不能直接用整数赋值。例如,x=1;是错误的,2者类型不一致
  cout<<x<<endl;//显示枚举类型数据将显示其对应的数值,显示结果:1
  return 0;
}
+联合体类型
c++语言可以将多个变量组合在一起形成一个逻辑上的整体,使变量成为整体的IP个成员。变量成员的类型可以相同,也可以不同。将多个变量成员组成的整体定义成新的数据类型,这种类型能够描述程序设计所面临的复杂数据
如果多个变量成员不会同时使用,那就可以将它们定义成联合体类型。联合体类型的特点是变量成员公用同一内存单元,同一时刻只能保存一个成员的数据
如果多个变量成员需同时使用,那就将它们定义成结构体类型。结构体类型的特点是各变量成员单独分配内存单元,分别保存各自的数据
//定义联合体类型
  union 联合体类型名
  {
    数据类型1 变量成员名1;
    数据类型2 变量成员名2;
    .....
    数据类型n 变量成员名n;
  }
union是定义联合体类型的关键字
联合体类型名需符合标识符命名规则
变量成员之间的数据类型可以相同,也可以不同,但变量名不能相同
union UType
{
  char ch;
  int x;
  double y;
}
union UType a;
a.ch  a.x  a.y
+结构体类型
C++语言可以将多个变量组合在一起形成一个逻辑上的整体,使变量成为整体的一个成员。变量成员的类型可以相同,也可以不同。如果多个变量成员需同时使用,那就可以将它们定义成结构体类型
int main()
{
  char ID[11],Name[9];
  int Age;
  double Score;
  strcpy(ID,"1510078620");
  strcpy(Name,李若溪"");
  Age=19;
  Score=90;
  .....
}
//定义结构体类型
struct 结构体类型名
{
  数据类型1 变量成员名1;
  数据类型2 变量成员名2;
  ......
};
struct是定义结构体类型的关键字
结构体类型名需符合标识符的命名规则
变量成员之间的数据类型可以相同,也可以不同,但变量名不能相同
struct Student
{
  char ID[11],Name[9];
  int Age;
  double Score;
};
struct Student a;
a.ID  a.Name  a.Age  a.Score
+结构体类型的指针变量
struct Student a;
struct Student p;
p=&a;
(p).ID  (p).Name  (p).Age  (*p).Score
指向运算符:->
p->ID  p->Name  p->Age  p->Score
六、
结构化程序设计




面向对象程序设计
中国农业大学mooc
 
                    
                 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号