|
|
|
|
按照程序运行时数据的值能否改变,将数据分为常量和变量。程序中的数据对象可以具有左值和(或)右值,左值是指存储单元(或地址、容器),右值是指具体值(或内容)。变量具有左值和右值,在程序运行过程中其右值可以改变;常量只有右值,在程序运行过程中其右值不能改变。
|
|
|
|
按数据的作用域范围,数据可分为全局量和局部量。系统为全局变量分配的存储空间在程序运行的过程中一般是不改变的,而为局部变量分配的存储单元是动态改变的。
|
|
|
|
按照数据组织形式的不同可将数据分为基本类型、用户定义类型、构造类型及其他类型。C(C++)的数据类型如下。
|
|
|
.基本类型:整型(int)、字符型(char)、实型(float、double)和布尔类型(bool)。
|
|
|
|
|
|
|
|
其中,布尔类型和类类型是C++在C语言的基础上扩充的。
|
|
|
|
程序语言的运算成分是指允许使用的运算符号及运算规则。大多数高级程序语言的基本运算可以分成算术运算、关系运算和逻辑运算,有些语言还提供位运算。运算符号的使用与数据类型密切相关。为了确保运算结果的唯一性,运算符号要规定优先级和结合性,必要时还要使用圆括号。
|
|
|
|
控制成分指明语言允许表述的控制结构,程序员使用控制成分来构造程序中的控制逻辑。
|
|
|
|
在顺序结构中,计算过程从所描述的第一个操作开始,按顺序依次执行后续的操作,直到执行完序列的最后一个操作。顺序结构内也可以包含其他控制结构。
|
|
|
|
选择结构提供了在两种或多种分支中选择执行其中一个分支的逻辑。基本的选择结构是指定一个条件P,然后根据条件的成立与否决定控制流走计算A还是走计算B,从两个分支中选择一个执行。选择结构中的计算A或计算B还可以包含顺序、选择和重复结构。程序语言中通常还提供简化了的选择结构,也就是没有计算B的分支结构。
|
|
|
|
循环结构描述了重复计算的过程,通常包括3个部分,即初始化、需要重复计算的部分和重复的条件。其中初始化部分有时在控制的逻辑结构中不进行显式表示。循环结构主要有两种形式,即while型重复结构和do-while型重复结构。
|
|
|
|
(1)复合语句。复合语句用于描述顺序控制结构。复合语句是一系列用"{"和"}"括起来的声明和语句,其主要作用是将多条语句组成一个可执行单元。复合语句是一个整体,要么全部执行,要么一条语句也不执行。
|
|
|
(2)if语句和switch语句。这两种语句用于实现选择结构。
|
|
|
①if语句实现的是双分支的选择结构,其一般形式如下:
|
|
|
|
其中,语句1和语句2可以是任何合法的C(C++)语句,当语句2为空语句时,可以简化为
|
|
|
|
使用if语句时,需要注意的是if和else的匹配关系。C语言规定,else总是与离它最近的尚没有else与其匹配的if相匹配。
|
|
|
②switch语句描述了多分支的选择结构,其一般形式如下:
|
|
|
|
执行switch语句时,首先计算表达式的值,然后用所得的值与列举的常量表达式值依次比较,若任一常量表达式都不能与所得的值相匹配,则执行default的"语句序列n+1",然后结束switch语句。
|
|
|
表达式可以是任何类型,常用的是字符型或整型表达式。多个常量表达式可以共用一个语句组。语句组可以包括任何可执行语句,且无须用"{"和"}"括起来。
|
|
|
(3)循环语句。C(C++)语言提供了3种形式的循环语句,用于描述循环计算的控制结构。
|
|
|
①while语句。while语句描述了先判断条件再执行循环体的控制结构,其一般形式如下:
|
|
|
|
②do-while语句。do-while语句描述了先执行循环体再判断条件的控制结构,其一般格式如下:
|
|
|
|
|
|
|
|
|
函数是程序模块的主要成分,它是一段具有独立功能的程序。函数的使用涉及3个概念,即函数定义、函数声明和函数调用。
|
|
|
(1)函数定义。包括函数首部和函数体两个部分。函数的定义描述了函数做什么和怎么做。
|
|
|
(2)函数声明。函数应该先声明后引用。函数声明定义了函数原型。声明函数原型的目的在于告诉编译器传递给函数的参数个数、类型以及函数返回值的类型,参数表中仅需要依次列出函数定义中的参数类型。函数原型可以使编译器检查源程序中对函数的调用是否正确。
|
|
|
(3)函数调用。当需要在一个函数(称为主调函数)中使用另一个函数(称为被调函数)实现的功能时,便以函数名字进行调用,称为函数调用。调用函数和被调用函数之间交换信息的方法主要有两种:一种是由被调用函数把返回值返回给主调函数;另一种是通过参数带回信息。函数调用时实参和形参间交换信息的方法有传值调用和引用调用两种。
|
|
|
①传值调用(Call by Value)。若实现函数调用时实参向形式参数传递相应类型的值(副本),则称为传值调用。这种方式下形式参数不能向实际参数传递信息。在C语言中,要实现被调用函数对实际参数的修改,必须用指针作形参。即调用时需要先对实参进行取地址运算,然后将实参的地址传递给指针形参,本质上仍属于传值调用。这种方式实现了间接内存访问。
|
|
|
②引用调用(Call by Reference)。引用是C++中增加的数据类型,当形式参数为引用类型时,形参名实际上是实参的别名,函数中对形参的访问和修改实际上就是针对相应实际参数所作的访问和改变。
|
|
|