第 3 章 基本数据类型
180 likes | 362 Views
第 3 章 基本数据类型. 学习目的: ① 了解数据在计算机中的存储方式; ② 掌握常用数据类型变量及常量的使用。. 3.1 数据对象 3.2 基本数据类型 3.3 变量与常量 3.4 指针类型 3.5 引用类型 3.6 类型的意义. 程序中的数据被以某种形式存储在内存中,必须能被计算机识别和处理。高级语言程序中的数据被分为多个种类,以不同方式存储, 数据类型 决定了数据的存储方式。. 3.1 数据对象. 具有名字、存储地址和值等多个属性的实体。. 数据对象的属性决定了它所能容纳的不同值的数量和类型,同时也表明了这些值之间的逻辑组织和关系。.
第 3 章 基本数据类型
E N D
Presentation Transcript
第3章 基本数据类型 学习目的: ① 了解数据在计算机中的存储方式; ② 掌握常用数据类型变量及常量的使用。 3.1数据对象 3.2 基本数据类型 3.3变量与常量 3.4指针类型 3.5引用类型 3.6类型的意义 程序中的数据被以某种形式存储在内存中,必须能被计算机识别和处理。高级语言程序中的数据被分为多个种类,以不同方式存储,数据类型决定了数据的存储方式。
3.1 数据对象 具有名字、存储地址和值等多个属性的实体。 数据对象的属性决定了它所能容纳的不同值的数量和类型,同时也表明了这些值之间的逻辑组织和关系。 根据数据对象的值是否能被改变,将数据对象划分为:常量和变量。
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);
整型 浮点型 3.2.1 整型与浮点型 在计算机中整型数据以8位十六进制(32位二进制)形式存储,所以取值范围-231~231-1 。 对于 int n=9542; 内存中的n为十六进制数02546 ; 负数以二进制补码形式存储。 浮点型有单精度(说明符为float)和双精度(说明符为double)之分 。内部数据格式由符号位、指数和小数尾数等三个部分,float的指数范围2-127~2128,double的指数范围2-1023~21024 。
3.2.2 字符类型 字符类型数据的存储占据1字节 任何信息在内存中都是以数字的形式存储的,字符类型也不例外。不同字符根据编码规则被赋予不同的二进制整数。一般采用的编码规则是ASCII编码或扩展ASCII编码。例如:英文大写字母A~Z被编码为41H~5AH(即十进制的65~90 )。其它常用字符的编码见书中附录。 由于编码在字符之间建立起一种顺序关系,编码值小的字符在编码表中的位置靠前,可以通过比较字符编码的大小确定两个字符在编码表中的前后顺序,甚至有时可以把字符型数据做为一种特殊的整数使用。
3.2.3 逻辑型 逻辑型(说明符为bool)数据的取值只有代表逻辑真与逻辑假的两个值,有的语言使用整数1和0,有的使用true和false,有的使用非0和0。Visual C++5.0后,逻辑型为内建类型,具有true和false两个值,在内存中分别以1和0标识,存储宽度为1字节。 3.2.4 空值型 空值型(说明符为void)主要用于指针和函数返回值,表示数据类型的不确定性,而并不是指尚未赋值。空指针表示指针所指向数据的类型不确定。
3.3 变量与常量 变量和常量通常都属于数据对象,具有值、存储地址、名字等属性。 程序中的变量和常量用于存储运算中间结果或特定数据,对数据等的处理通常表现为对变量和常量的具体运算和操作,因此与变量和常量相关的语法、规定等,对于程序设计十分重要。 3.3.1 常量 3.3.2 变量
常量 包括 整型常量 浮点型常量 字符常量 字符串常量 符号常量 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 "
3.3.2 变量 变量为值可以被改变的数据对象。 变量具有变量名、变量值及类型等三要素。 变量在程序中常用于暂存运算的中间结果或程序块之间的信息传递。 1. 变量的值 变量在使用前必须说明。 在程序中使用赋值语句改变变量的值: nCount+=2; nCount=nCount*nCount; 注意:给变量赋初值是一个好习惯。
3.3.2 变量 变量说明Variable Declaration : 仅说明变量的类型,未指明变量值和存储地址; 变量定义Variable Definition : 说明变量类型的同时为变量申请存储空间。 变量说明和变量定义之间的区别: 变量定义将被说明变量与其存储单元联系在一起。 常用的变量说明或变量定义格式为: <var_specifier> <var_list>; 其中: <var_specifier>为变量类型说明符 <var_list>为变量名表 2. 变量的定义
3.3.2 变量 3. 变量的地址 变量的地址为存储该变量值的存储空间首地址,通常指所占用存储区的第一个字或字节的地址。 变量的地址可以使用运算符 & 得到,这个地址值可以被输出或赋值给另一类变量—指针变量,如: int nIndex=8; cout<<"The address of nIndex is"<<&nIndex; int* pnIndex=&nIndex; 程序执行后将在屏幕上显示出变量nIndex的地址值: The address of nIndex is 0x××××××××
3.4 指针类型 指针是C语言与C++的特色,使得程序员可以在程序中直接访问内存。 “指针”通指具有指针类型的变量,而指针类型是一大类特定数据类型的统称,指针持有相应类型数据的存储地址。 3.4.1 指针定义 3.4.2 指针的初始化 3.4.3 指针运算 3.4.4指针与常量
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个元素
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;
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;
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为常指针,不能改变
3.5 引用类型 引用的定义格式通常如下: <TypeName> &<RefName>(<VariableName>); 或者 <TypeName> &<RefName>=<VariableName>; 其中<TypeName>是某种类型名,可以是除去引用类型之外的任何一种类型,比如整型、字符型、指针类型、结构和类等 int var(1); int &Ref=var; int &MyRef=2; 引用的应用更常见于函数的参数或函数的返回值类型。
3.6 类型的意义 • 数据的存储 • 数据所允许的操作 • 函数重载 • 类型检查