目录
第一章 C++基础知识
第一节 C++程序的基本结构
C++是面向对象语言,以C语言为核心。
1.1 C++程序结构
C++程序结构包含声明区,函数区两个部分,在任何一个区域内都可以随时插入程序的注释。
例1:从键盘键入圆的半径,求圆的面积。
//*****ex1_1.cpp***** //声明区 #define PI 3.14//宏定义 #include<iostream>//包含文件 using namespace std; float sum(float x);//函数声明(sum的返回值类型是float,函数名为sum,形参是float x) void main(){//函数区(main函数的返回值类型是void,函数名是main,没有形参) float r,s; cout<<"Input r:"; cin>>r; s=sum(r); cout<<"r="<<r<<""<<"s="<<""<<s<<endl; } float sum(float x); { return PI*x*x; }
- 1.声明区
声明区在函数之外,程序的声明区可能要编写:
a.宏定义
b.包含文件
c.函数声明
d.条件编译
e.全局变量声明
f.结构体等定义
g.类的定义
- 2.函数区
- 一个程序由一个主函数main()和0个或多个其他函数组成,每个函数都是由函数声明部分和函数区(函数体)部分组成。
- 程序的执行从main()函数开始。
- 函数声明部分包括函数返回值类型,函数名,函数的形式参数(形参)。
- 程序=结构+算法(公式取自于著名计算机学家Niklans Wirth)
- C++程序的组装形式:函数——文件——程序。
- C++程序中,函数是调用关系,即若干个函数都是平等的。在一个函数中不能定义另一个函数,即函数之间不存在嵌套关系,不被任何函数调用的函数是无用的。
1.2 C++书写格式
- 一行可写多条语句,一条语句写在多行,只要每条语句以分号结束即可。也因如此,C++程序的可读性差,为了提高C++的可读性,书写格式有如下约定:
a.每一行一般书写一条语句,语句较短时,多条语句可书写在一行。语句较长时,一条语句可写在多行。
b.每句语句以分号结束,表示一条语句的结束,多条语句不用分号。
语句前面没有标号,只有goto语句的转向目标语句前加分号。
c.使用右缩进方法表达程序中的层次结构。
d.可使用多行注释和单行注释以增强程序的可读性
- 多行注释:/*......*/
- 单行注释://
1.3 开发过程
- 1.以文件形式存储的C++程序成为C++源程序,文件的扩展名是.cpp
- 2.编译程序将.cpp翻译成目标程序.obj
- 3.链接程序把目标程序链接成可执行程序.exe
1.4 C++的词法规则
- 1.C++的字符集组成
- a.26个小写字母:a——z
- b.26个大写字母:A——Z
- c.10个数字:0——9
- d.标点和特殊字符
- e.空字符:ASCII码为0的字符,用作字符串的结束符
- 2.C++的单词及其构词规则
- 单词又若干个合法字符组成
- a.标识符
- 标识符由字母,下划线和数字组成的字符序列,第一个字母必须是字母或下划线,不能是数字。标识符的字母大小写是不同的。
- 注意:
- 1.遵循标识符规则
- 2.系统已经使用的关键字,函数名或其他已定义的单词不能再定义成标识符
- 3.定义标识符时尽可能让标识符有意义,便于阅读,做到见名知意
- b.关键字
- 关键字又称保留字,是被系统已经定义了的已具有特定含义的标识符。(ASCII C规定了32个关键字,ASCII C++在此基础上增加了关键字)
auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while bool catch class const_cast delete dynamic_cast explicit false friend inline mutable namespace new operator private protected public reinterpret_cast static_cast template this throw true try typeid typename using virtual _asm _far _fortran _huge _near _pascal - c.运算符
- 表达式由运算符和操作数组成,连接一个操作数的运算符成为单目运算符,连接两个操作数的运算符称为双目运算符,连接三个操作数的运算符成为三目运算符。
- d.常量
- 常量是在程序中不改变的量,常量分为:整型常量,浮点型常量,字符常量,字符串常量。
- e.变量
- 变量是在程序中可以改变的量,变量三要素:名字,类型,值。
- 变量是一种标识符,其命名完全与标识符相同。
- f.注释符
- g.分隔符
- 用作单词之间的分隔符:空格符,换行符,水平制表符等。
- 多个变量或多个参数之间的分隔符:逗号
- 用于在for语句的for关键字后的圆括号内:分号
- 用来标识语句标号和用于开关语句switch和case关键字:冒号
1.5 C++基本数据类型
数据类型 字节数 bool 1 int 4 short 2 long 4 unsigned int 4 unsigned short int 2 unsigned long int 4 signed int 4 signed short int 2 signed long int 4 char 1 float 4 double 8 long double 8 1.6 常量与变量
1.常量
2.变量
变量类型:存储类 数据类型
变量的定义:
[<存储类>] <数据类型> <变量名表>;
注意:
自动类安全性好,寄存器类存取速度快,外部类安全性差
在说明一个外部类变量时,必须加存储类说明符extern。
有如下两种情况要在引用外部类时作说明:
a.在一个文件中,在定义前引用外部存储类变量必须说明。
b.在多个文件的程序中,在一个文件中定义,在另一个文件中引用,引用前要说明。
#include<iostream> using namespace std; char sl[80],s2[80]; void main(){ cout<<"Input 2 Words,Please:"; cin>>s1>>s2; cout<<s1<<'\t'<<s2<<endl; //定义在前,引用在后的外部存储类变量
#include<iostream> using namespace std; void main(){ extern char s1[80],s2[80]; cout<<"Input 2 Words,Please:"; cin<<s1<<'\t'<<s2<<endl; } char s1[80],s2[80]; //定义在后,引用在前的外部存储类变量
变量的值
变量初始化格式:
[<存储类>]<数据类型><变量名 1>=<初值1>,<变量名2>=<初值2>,.......;
1.7 运算符
1.8 类型转换
a.隐含自动转换,从低类型往高类型转换
char型和short型自动转换为int型
unsigned char型和unsigned short型自动转换为unsigned型
float型自动转换为double型
b.在各类数值数据进行混合运算时,系统自动将参与运算的各类数据类型转换为他们之间数据类型最高的类型。
C++数据类型顺序(从底到高):
int(short,char)<unsigned(unsigned short,unsigned char)<long<double(foat)
c.在赋值表达式中,系统自动将赋值运算符右边的表达式的数据类型转换为左边变量的类型。这种转换中,从低类型向高类型的转换是保值的,从高类型到低类型的转换是不保值的(即转换有数据精度损失)。
d.强制转换格式
(<数据类型说明符>)<表达式>
强制类型是不保值的,强制转换是一次性的。
#include<iostream> using namespace std; void main(){ int x=1,y=2,z=3; double x1=1.234567; double y1; cout<<"混合表达式占用字节数:"<<sizeof(x+y+z+x1)<<endl; }