1 / 18

第 3 章 基本数据类型

第 3 章 基本数据类型. 学习目的: ① 了解数据在计算机中的存储方式; ② 掌握常用数据类型变量及常量的使用。. 3.1 数据对象 3.2 基本数据类型 3.3 变量与常量 3.4 指针类型 3.5 引用类型 3.6 类型的意义. 程序中的数据被以某种形式存储在内存中,必须能被计算机识别和处理。高级语言程序中的数据被分为多个种类,以不同方式存储, 数据类型 决定了数据的存储方式。. 3.1 数据对象. 具有名字、存储地址和值等多个属性的实体。. 数据对象的属性决定了它所能容纳的不同值的数量和类型,同时也表明了这些值之间的逻辑组织和关系。.

ross
Download Presentation

第 3 章 基本数据类型

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第3章 基本数据类型 学习目的: ① 了解数据在计算机中的存储方式; ② 掌握常用数据类型变量及常量的使用。 3.1数据对象 3.2 基本数据类型 3.3变量与常量 3.4指针类型 3.5引用类型 3.6类型的意义 程序中的数据被以某种形式存储在内存中,必须能被计算机识别和处理。高级语言程序中的数据被分为多个种类,以不同方式存储,数据类型决定了数据的存储方式。

  2. 3.1 数据对象 具有名字、存储地址和值等多个属性的实体。 数据对象的属性决定了它所能容纳的不同值的数量和类型,同时也表明了这些值之间的逻辑组织和关系。 根据数据对象的值是否能被改变,将数据对象划分为:常量和变量。

  3. 3.2 基本数据类型 3.2.1 整型与浮点型 3.2.2 字符类型 3.2.3 逻辑型 3.2.4 空值型 typedef int MYTYPE; int n=8, k, m[10]; k=sizeof n; n=sizeof(float); k=sizeof(m); n=sizeof(MYTYPE);

  4. 整型 浮点型 3.2.1 整型与浮点型 在计算机中整型数据以8位十六进制(32位二进制)形式存储,所以取值范围-231~231-1 。 对于 int n=9542; 内存中的n为十六进制数02546 ; 负数以二进制补码形式存储。 浮点型有单精度(说明符为float)和双精度(说明符为double)之分 。内部数据格式由符号位、指数和小数尾数等三个部分,float的指数范围2-127~2128,double的指数范围2-1023~21024 。

  5. 3.2.2 字符类型 字符类型数据的存储占据1字节 任何信息在内存中都是以数字的形式存储的,字符类型也不例外。不同字符根据编码规则被赋予不同的二进制整数。一般采用的编码规则是ASCII编码或扩展ASCII编码。例如:英文大写字母A~Z被编码为41H~5AH(即十进制的65~90 )。其它常用字符的编码见书中附录。 由于编码在字符之间建立起一种顺序关系,编码值小的字符在编码表中的位置靠前,可以通过比较字符编码的大小确定两个字符在编码表中的前后顺序,甚至有时可以把字符型数据做为一种特殊的整数使用。

  6. 3.2.3 逻辑型 逻辑型(说明符为bool)数据的取值只有代表逻辑真与逻辑假的两个值,有的语言使用整数1和0,有的使用true和false,有的使用非0和0。Visual C++5.0后,逻辑型为内建类型,具有true和false两个值,在内存中分别以1和0标识,存储宽度为1字节。 3.2.4 空值型 空值型(说明符为void)主要用于指针和函数返回值,表示数据类型的不确定性,而并不是指尚未赋值。空指针表示指针所指向数据的类型不确定。

  7. 3.3 变量与常量 变量和常量通常都属于数据对象,具有值、存储地址、名字等属性。 程序中的变量和常量用于存储运算中间结果或特定数据,对数据等的处理通常表现为对变量和常量的具体运算和操作,因此与变量和常量相关的语法、规定等,对于程序设计十分重要。 3.3.1 常量 3.3.2 变量

  8. 常量 包括 整型常量 浮点型常量 字符常量 字符串常量 符号常量 3.3.1 常量 字面量的取值与其字面含义相同 文字量、字面量 小数点表示法 由整数和小数两个部分组成,也可只有整数部分或小数部分,例如,1.、33.87、7.0。 科学表示法 在小数后面加E(或e)及表示指数的整数,指数可以是负数,用于较大或较小的浮点数,例:3.141e-8、4e10 十 进 制: 若干0~9数字,首位不能是0。例:345 八 进 制: 0开始,后随若干数字0~7,例:0456 十六进制: 0x或0X开始,后跟若干数字及字母A~E(a~e),例:0x134FA const int nTopIndex=10; const char cVisible='y'; const char* MyName="Franklin"; 'a'、'B'、'#'、'a’=='\141’=='\x61' "My name is John" "Item1\tItem2\tItem3 \n "

  9. 3.3.2 变量 变量为值可以被改变的数据对象。 变量具有变量名、变量值及类型等三要素。 变量在程序中常用于暂存运算的中间结果或程序块之间的信息传递。 1. 变量的值 变量在使用前必须说明。 在程序中使用赋值语句改变变量的值: nCount+=2; nCount=nCount*nCount; 注意:给变量赋初值是一个好习惯。

  10. 3.3.2 变量 变量说明Variable Declaration : 仅说明变量的类型,未指明变量值和存储地址; 变量定义Variable Definition : 说明变量类型的同时为变量申请存储空间。 变量说明和变量定义之间的区别: 变量定义将被说明变量与其存储单元联系在一起。 常用的变量说明或变量定义格式为: <var_specifier> <var_list>; 其中: <var_specifier>为变量类型说明符 <var_list>为变量名表 2. 变量的定义

  11. 3.3.2 变量 3. 变量的地址 变量的地址为存储该变量值的存储空间首地址,通常指所占用存储区的第一个字或字节的地址。 变量的地址可以使用运算符 & 得到,这个地址值可以被输出或赋值给另一类变量—指针变量,如: int nIndex=8; cout<<"The address of nIndex is"<<&nIndex; int* pnIndex=&nIndex; 程序执行后将在屏幕上显示出变量nIndex的地址值: The address of nIndex is 0x××××××××

  12. 3.4 指针类型 指针是C语言与C++的特色,使得程序员可以在程序中直接访问内存。 “指针”通指具有指针类型的变量,而指针类型是一大类特定数据类型的统称,指针持有相应类型数据的存储地址。 3.4.1 指针定义 3.4.2 指针的初始化 3.4.3 指针运算 3.4.4指针与常量

  13. 3.4.1 指针定义 对于类型T,T* 被称为指向类型T的指针类型(简称T型指针),即具有类型T*的指针变量可以保持T型数据(变量、常量等)的内存存储地址。 指针定义方法 char c='A'; char* pChar="abcde"; char* pc=&c; 分析下述指针定义的含义 int* pInt; //指向整型量的指针 char** ppChar; //指向字符型指针的指针 int* pIndex[4]; //整型指针数组,每个元素 //中存放有整数指针 int (*pCount)[3]; //指向一维数组的指 //针,该数组有3个元素

  14. 3.4.2 指针的初始化 定义指针时把一个变量或常量的地址赋值给指针,称作指针初始化。 好的编程风格是每个指针都应该初始化为某个地址,或为0。 不同类型变量或常量的地址表达方式不同,对于基本类型变量、数组成员、结构成员等在其名字前加运算符 &;数组的地址与其第一个元素的地址相同,用数组的名字表示;函数的地址为该函数的入口,用函数的名字表示,例如: int a, b[10]; int *pa=&a; // &a表示a的地址 int *pb=b; // b表示数组b[10]的首地址,此时*pb为数组中的第一个整数 int *pbElement=&b[3]; // &b[3]为数组元素b[3]的地址 int bb[4][3], (*pArray)[3]; pArray=bb;

  15. 3.4.3 指针运算 int n=3; int k=n+1; int* pn=&n; int* p=pn+1; 2 指针的增1(减1) 1 指针与整数的运算 int a[5]={1, 2, 3, 4, 5}; int* pn=a; pn+=2; int a[5]={1, 2, 3, 4, 5}; int* pn=a; pn+=2; 4 指针间的关系运算 3 指针之间的减法 两个同类型指针之间可以进行大小的比较,用以确定它们所指向数据的前后顺序。如两个指针相等说明它们指向同一个数据。当两个指针指向同一数组的元素时,如果指针的值不同,那么取值大的指针所指的元素位于取值小的指针所指元素之后 。 char Str[20]="My name is John."; char* pStart=Str, pEnd=Str; for(int i=0; i<20; i++) { if(*pEnd=='\0') break; *pEnd++; } cout<<"The length is "<<pEnd-pStart<<endl;

  16. 3.4.4指针与常量 const char *p=0; const char cIndex='A'; p=&cIndex; // 可以改变p的值 *p='B'; // 错! 因为p所指的内容为常量,不能改变 const char *p; 或 char const *p; char * const p; char * const p="abcd"; *(p+2)='A'; p="hijk"; // 错! 因为p为常指针,不能改变 const char * const p; const char * const p="abcd"; *(p+2)='A'; // 错! p所指内容为常量,不能改变 p="hijk"; // 错! 因为p为常指针,不能改变

  17. 3.5 引用类型 引用的定义格式通常如下: <TypeName> &<RefName>(<VariableName>); 或者 <TypeName> &<RefName>=<VariableName>; 其中<TypeName>是某种类型名,可以是除去引用类型之外的任何一种类型,比如整型、字符型、指针类型、结构和类等 int var(1); int &Ref=var; int &MyRef=2; 引用的应用更常见于函数的参数或函数的返回值类型。

  18. 3.6 类型的意义 • 数据的存储 • 数据所允许的操作 • 函数重载 • 类型检查

More Related