数据、变量和计算
1.C++程序结构
C++程序由一个或多个函数组成,每个C++程序都包含函数main()(由Application Wizard生成的Win32控制台程序具有一个名称为_tmain的主函数,这是一个编程结构,根据程序是否使用Unicode字符,它允许函数的名称是main或wmain,wmain或_tmain是Microsoft专有的符合C++标准的主函数名称是main),程序就是从这个函数开始执行的,其他函数也是从这个函数中开始调用的。
不同的程序有着不同的函数结构,但是它们都从main()的开始处开始执行。将一个程序分成多个函数的主要优点是,可以分别编写和测试每个函数。另一个优点是,为执行特定任务而编写的函数可以在其他程序中重用。C++附带的库提供了大量可以在程序中使用的标准函数。
2.名称空间
名称空间是C++中的一种机制,它防止在程序中将相同的名称用于不同的事情时可能发生的问题,其方法是将一组给定的名称(如标准库中提供的名称)与一种姓(family name)关联起来,这种姓就是名称空间名称。
对于在名称空间内出现的代码来说,其中定义的每个名称也都有一个与其相关联的名称空间名称。所有的标准库工具都定义在一个名称为std的名称空间内,所以对于这个标准库中可以在程序中访问的每一项,它们都有自己的名称,以及作为限定符的名称空间名称std。名称cout和endl是在标准库中定义的,所以它们的全名是std::cout和std::endl。将名称空间名称和一个实体的名称分割开的两个冒号构成了一种称为“作用域解析运算符”的运算符。使用using指令能使我们直接使用简化名称,如:using std::cout;using std::endl;或者直接全部使用using namespace std;
在头文件中使用声明时要小心,尤其是它们包含在其他几个源文件中时,在头文件中应避免把using声明放在全局作用域中,因为它们会应用于包含该头文件的所有源文件。
3.C++中的变量
在所有的计算机程序中,一个基本的目标是操作一些数据,然后获得一些结果。这个过程中的一个基本元素是获得这样一段内存,您可以称其为自己的内存,可以使用一个有意义的名称引用它,并且可以在其中存储一条数据。按照这种方法指定的每段内存都称为一个变量。
赋予变量的名称叫做标识符,或者更方便地称之为变量名。变量名可以包含字母A~z(大写或小写)、数字0~9和下划线字符。变量名还必须以字母或下划线开头。
在Visual C++中,变量名最长可以达到2048个字符,因此给变量命名有相当大的灵活性。但是并非所有编译器都支持这么长的名称,所以最好把名称的最大长度限制在31个字符。
变量声明是一个程序语句,它指定给定类型的变量的名称。如:int value;
4.定义变量和常量
const修饰符,用来表明变量是常量,编译器将检查是否有试图修改这些变量值得语句,如果有则生成一个错误消息。
5.基本的键盘输入和屏幕输出
键盘输入读取用std::cin,屏幕输出用:std::cout。
6.执行算数运算
7.强制转换操作数
static_cast<要转换成的类型>(表达式):静态地检查类型强制转换,也就是说,在编译程序时进行检查,在执行程序时,不再进行其他查看这种转换的应用是否安全的检查。
dynamic_cast<>():动态检查转换,也就是说,在执行程序时进行检查。
const_cast<>():用于删除表达式中的const属性。
reinterpret_cast<>():是一种无条件的强制转换。
static_cast运算的作用是将由表达式求得的值转换成在尖括号内指定的类型。对表达式没有限制,从单个变量到包含许多嵌套圆括号的复杂表达式都可以。
老式的类型强制转换:(要转换成的类型)表达式。表达式的结果被强制转换成圆括号之间的类型。老式的强制转换语法涵盖了所有这些转换,因此使用老式类型强制转换的代码更容易出错,意图不太明确。
8.变量作用域
9.auto关键字的作用
变量定义语句中将auto关键字用作变量的类型,变量的类型根据提供的初始值来推断。
10.如何获取表达式的类型
11.其他概念
main()函数:C++中的程序至少包含一个或多个函数,且必须包含一个称为main()的函数,它是程序开始执行的位置。
函数体:函数的可执行部分由包括在大括号之间的语句组成。
语句:C++中的语句以分号结束。
名称:C++中有命名的对象,如变量或函数,可以定义一个由字母和数字序列组成的名称,其中第一位是字母,下划线在这里被认为是字母。大写和小写字母是有区别的。
保留字:在程序中命名的所有对象(如变量)的名称一定不能和C++中的任何一个保留字相同。
基本类型:C++中的所有常量和变量都有给定的类型。基本类型是char、signed char、unsigned char、wchar_t、short、unsigned short、int、unsigned int、long、unsigned long、long long、unsigned long long、bool、float、double以及long double
声明:变量的名称和类型在以分号结束的声明语句中定义。变量也可以在声明中赋予初始值。
自动变量:默认情况下,变量是自动变量,这意味着它的生存期始于它被声明之时,止于定义它的作用域终止之时,终止点由其声明之后对应的右大括号表示。
static变量:可以把一个变量声明为static,在这种情况下,它将在程序的生存期内持续存在。只能在定义它的作用域内访问它。
全局变量:可以在一个程序的所有代码块之外声明变量,这时它们具有全局名称空间作用域。除名称与全局变量相同的局部变量所在的部分以外,可以在整个程序内访问具有全局名称空间作用域的变量。即使这样,使用作用域解析运算符仍然可以访问它们。
枚举:枚举是具有固定值集定义的一种类型。应使用类型安全的枚举,它使用关键字enum class来定义。
名称空间:名称空间定义一个作用域,其中声明的每个名称都由该名称空间的名称限定。从名称空间外部引用名称时,需要限定这些名称。使用名称空间名来限定对象名,就可以在名称空间的外部访问该名称空间中的各个对象。另外,还可以给名称空间中要引用的每个名称提供using声明。
标准库:C++标准库包含可以在程序中使用的函数、运算符和常量,它们包含在名称空间std内。
lvalue和rvalue:C++中的每个表达式都是lvalue或rvalue。lvalue是一个持续存在的地址,可以出现在赋值语句的左边。非const变量就是一个lvalue的示例。不是lvalue的结果都是rvalue,这表示,rvalue不能用在赋值语句的左边。