⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c++2.dat

📁 程序字典 经典的东西 里面有C、汇编、JAVA的字典
💻 DAT
📖 第 1 页 / 共 2 页
字号:
第二章 语言基础

第一节 标识符和关键字

标识符是一个字符序列,用来标识变量、函数、数据类型等.任何程序都离不开标识符,也就是说,不可能有没有标识符的C++程序.

标识符可以由大写字母、小写字母、下划线(_)和数字0~9组成,但必须是以大写字母、小写字母或下划线(_)开头.在C++语言程序中,大写字母和小写字母不能混用,比如Name和name就代表两个不同的标识符.在表2-1中,我们给出了几个正确和不正确的标识符实例.  
 表2-1:正确和不正确的标识符实例 
  正确 不正确 
smart 5smart(不能数字开头) 
_decision bomb?(有非法字符?) 
key_board key.board(有非法字符.) 
 
 
标识符的命名规则:
  1. 所有标识符必须由一个字母(a~z或A~Z)或下划线(_)开头;
  2. 标识符的其它部分可以用字母、下划线或数字(0~9)组成;
  3. 大小写字母表示不同意义, 即代表不同的标识符,如前面的cout和Cout;
  在定义标识符时,虽然语法上允许用下划线开头,但是,我们最好避免定义用下划线开头的标识符,因为编译器常常定义一些下划线开头的标识符.
  C++没有限制一个标识符中字符的个数,但是,大多数的编译器都会有限制.不过,我们在定义标识符时,通常并不用担心标识符中字符数会不会超过编译器的限制,因为编译器限制的数字很大(例如255). 
  一个写得好的程序,标识符应该尽量有意义. 比如表示年可以用year,表示长度可以用length,表示累加和可以用sum等,这样的标识符本身就增加了程序的可读性,使程序更加清晰易懂.
C++语言的标识符经常用在以下情况中:
  1. 标识对象或变量的名字
  2. 类、结构和联合的成员
  3. 函数或类的成员函数
  4. 自定义类型名
  5. 标识宏的名字
  6. 宏的参数 


第二节 数据类型

在C++中,任何数据在使用之前都要进行数据类型的定义,然后才能使用.

一、C++的基本数据类型

基本数据类型是语言预定义的抽象.在C++中,每种基本数据类型都使用一个关键字来表示.C++的基本数据类型描述了机器硬件所支持的对象和可以对这些对象执行的操作.C++的基本数据类型分为三大类,即整型、浮点型和无值型(void).表1是C++所提供的基本数据类型及其值的范围.

在基于Windows(包括Windows95/98,Windows NT)的程序设计中,Windows定义并使用了许多非单一的数据类型,这些数据类型既简单又复杂,同一数据类型常常有一个以上的名字,这样设计的目的是为了有助于程序员编写更易读的代码,并通过不使用特定硬件的数据类型以促进跨平台、跨处理机的目的.例如,为了促进可移植性,在Windows中常使用数据类型的别名来代替具体的数据类型,如使用UINT代替使用无符号整数unsigned int等.

二、复合数据类型

C++中还提供了几种复合数据类型,这些复合数据类型包括数组、结构体、共用体、枚举、类和用户自定义类型.

类型 说明 二进制 值域 
char 字符型 8 -128~127 
signed char 有符号字符型 8 -128~127 
unsigned char 无符号字符型 8 0~255 
int 整型 16 -32768~32767 
signed int 有符号整型 16 -32768~32767 
unsigned int 无符号整型 16 0~65535 
short int 短整型 16 -32768~32767 
signed short int 有符号短整型 16 -32768~32767 
unsigned short int 无符号短整型 16 0~65535 
long int 长整型 32 -2^31~(2^31-1) 
signed long int 有符号长整型 32 -2^31~(2^31-1) 
unsigned long int 无符号长整型 32 0~(2^32-1) 
float 浮点型 32 7位有效位 
double 双精度型 64 15位有效位 
long double 长双精度型 80 19位有效位 

1.数组

数组是具有统一数据类型的对象的集合.每一个单独的对象并没有名字,但是它们可以通过其在数据中的位置来确定.例如,下面的语句定义了一个名为a的数组,该数组共有10个元素.程序中通过数据元素在在数组中的索引值来访问数组元素.

int i,a[10]; //定义数组,值得注意的是,数组中元素的下标是从0开始的
a[3]=50;          //为数组元素赋值
i=a[5];            //读取数组元素的值,将其赋于变量i

在C++中不仅可以定义一维数组,还可以定义多维数组.多维数组中的每一维的范围大小都用一个中括号括起来.例如,下面的语句定义了一个二维数组,该数组的第一维共有10个元素,第二维共有20个元素.

int Array[10][20];

在一个二维数组中,第一个下标称为行下标,第二个下标称为列下标,上面定义的数组Array相当于是一个具有10行20列的矩阵.

数组在定义时,系统将自动为它分配一块连续的内存空间.此时,数组名指向这块空间的起始点,并且在程序中不可改变.也就是说,一个数组名相当于一个常量.

2.结构体

在程序设计中,有时需要将某些相关的具有不同类型的数据组织到一个数据类型中.为此,C++中提供了这样一种复合数据类型,称之为结构体.定义一个结构体类型的一般形式为:

struct 结构体名
{
   成员列表;
};

例如,下面的语句中定义了一个有关学生的名为student的结构体,它包括学生的学号、姓名、性别和年龄等不同数据类型的信息.

struct student
{
   int StuNo;                   //学生学号
   char StuName[20];     //学生姓名
   char Sex;                     //学生性别
   int Age;                       //学生年龄
};

上面定义了一个结构体类型,struct student(其中struct是关键字,不能省略)表示这是一个“结构体类型”.它包括StuNo,StuName,Sex和Age等不同数据类型的数据项,这些数据项均称为结构体的成员.应当注意:struct student 是程序设计者自己定义的类型名.它和系统已定义的标准类型(如 int,char,float和double等)一样可以用来作为定义变量的类型.

定义了结构体类型后,还必须定义该结构体类型的变量,才能使用该结构体.定义结构体变量的方法有以下三种:

(1)先定义结构体类型再定义变量名
例如,上面已定义一个结构体类型struct student,可以用它来定义结构体student的两个变量stu1,stu2.
struct student stu1,stu2;
变量stu1、stu2为struct student类型变量,即它们具有struct student类型的结构.

(2)在定义类型的同时定义变量
例如,下面的语句在定义结构体类型student的同时定义了stu1和stu2两个变量.
struct student
{
      int StuNo;
      char StuName[20];
      char Sex;
      int Age;
}stu1,stu2;

(3)直接定义结构体变量
例如,下面的语句中直接定义了两个结构体变量stu1和stu2,但没有出现结构体类型名.
struct                                    //此处省略了结构体名
{
      int StuNo;
      char StuName[20];
      char Sex;
      int Age;
}stu1,stu2;
值得指出的是,结构体成员可以嵌套,即结构体的成员可以是另一个结构体.

3.共用体

在程序设计中,有时需要使几种不同类型的变量存放在同一内存单元中.这种使几种不同的数据类型的变量共占同一段内存的结构,称为“共用体”(有时也称“联合体”)类型的结构.“共用体”类型变量的定义形式为:

union 共用体名
{

      成员表列;
}变量表列;

例如,下面的语句中定义一个名为data的共用体,并定义了i和ch两个data共用体的成员及u1和u2两个共用体变量.

union data
{
      int i;
      char ch;
}u1,u2;

可以看出,共用体和结构体的定义相似.但它们的含义是不同的,二者的主要区别在于:结构体变量所占内存长度是各成员所占内存长度之和同,每个成员分别占有其自己的内存单元;而共用体变量所占的内存长度等于最长的成员的长度.

4.枚举

如果一个变量只有几种可能的值,就可以把它定义为枚举类型."枚举",顾名思义,就是把这种类型数据可取的值一一列举出来.
  例如,可以定义一个表示日期的枚举类型weekday:
  enum weekday{sun,mon,tru,wed,thu,fri,sat};
  这里enum是关键字,用于定义枚举数据类型,weekday是枚举类型的名字,枚举元素用标识符表示.
  接下来我们可以用weekday来定义变量,例如:
  weekday today,nextday; 
  C++语言也允许在定义枚举类型的同时定义枚举变量,例如:
  enum weekday{sun,mon,tru,wed,thu,fri,sat}today,nextday;
  这样,变量today和nextday就具有weekday类型,它们的取值只能是sun,mon,…,sta,例如可有:
  today = sun;
  nextday = mon;
  if(today == sat)
  nextday = sun //如果today是sat的话,那么nextday赋值为sun
  C++编译器对枚举元素实际上是按整型常数处理.所以,就象前面所说的那样,当遇到枚举元素列表时,编译程序就把其中第一个标识符赋0值,第二、三、…个标识符依次赋1、2、….因此,当枚举元素赋给枚举变量时,该变量实际得到一个整数值.例如:
  today = sun;
  是将0赋给today,而不是将字符串"sun"赋给today.赋值后:
  cout<<today;
  语句的输出结果是0.
  我们也可以在枚举类型定义时指定枚举元素的值,例如:
  enum weekday{sun = 7,mon = 1,tue,wed,thu,fri,sat};
  这时sun的值是7,mon的值是1,而tue以后各元素的值,从mon的值开始,每次递增1,即tue的值为2,wed的值为3,….如果不写mon = 1,则mon的值为8,tue的值为9,依此类推.
  由于枚举元素是常量,所以我们在程序中不能对它们进行赋值,如"sun = 0;mon = 1;"将产生错误.
  既然枚举元素就是整型值,那么它有什么存在的必要呢?至少有两个原因:一个是用标识符表示数值增加了程序的可读性,例如:
  if(today == sat)
  next = sun

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -