C 第六章 数组、指针与字符串

上传人:hs****ma 文档编号:579262205 上传时间:2024-08-26 格式:PPT 页数:57 大小:432.03KB
返回 下载 相关 举报
C 第六章 数组、指针与字符串_第1页
第1页 / 共57页
C 第六章 数组、指针与字符串_第2页
第2页 / 共57页
C 第六章 数组、指针与字符串_第3页
第3页 / 共57页
C 第六章 数组、指针与字符串_第4页
第4页 / 共57页
C 第六章 数组、指针与字符串_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《C 第六章 数组、指针与字符串》由会员分享,可在线阅读,更多相关《C 第六章 数组、指针与字符串(57页珍藏版)》请在金锄头文库上搜索。

1、第六章 数组、指针与字符串p数组数组p指针指针p字符串字符串面向对象程序设计1内蒙古工业大学数组p 数组的声明与使用数组的声明与使用 数组:具有一定数组:具有一定顺序顺序关系的若干关系的若干相同类型相同类型变量变量的集合体,组成数组的变量称为该数组的的集合体,组成数组的变量称为该数组的元素元素。 同一数组的各元素具有相同的类型同一数组的各元素具有相同的类型 数组可以由除数组可以由除void以外的任何一种类型构成以外的任何一种类型构成面向对象程序设计2内蒙古工业大学数组p 数组的声明数组的声明 格式格式eg: int a10;10个元素,个元素,a0,a1a 数据类型数据类型 数组名数组名 常量

2、表达式常量表达式 1 常量表达式常量表达式2 . . .整型、浮整型、浮点型、自点型、自定义类型定义类型数组名:常量,数组名:常量,代表数组元素代表数组元素在内存中的起在内存中的起始地址始地址unsigned int限定数组元素限定数组元素个数个数9?eg:int a53;有有 个元素,个元素,a00,a01a ?15?43面向对象程序设计3内蒙古工业大学数组p 数组的引用数组的引用引用数组元素:可以出现在简单变量能出现的引用数组元素:可以出现在简单变量能出现的任何地方,如,赋值、输入、输出、基本运算任何地方,如,赋值、输入、输出、基本运算格式:格式:数组名数组名下标下标1 下标下标2整常数整

3、常数整型变量整型变量整型表达式整型表达式整型数组元素整型数组元素值为整数的函数值为整数的函数score2scoreiscore2+iscorenum 2scoremax(i,j)int an;下标取值范围为:下标取值范围为: 0n-1面向对象程序设计4内蒙古工业大学数组p 数组的存储数组的存储 一维数组元素在内存中一维数组元素在内存中顺序顺序、连续连续存储存储 数组元素在内存中占据一组连续的存储单元数组元素在内存中占据一组连续的存储单元 逻辑上相邻的元素在物理地址上也是相邻的逻辑上相邻的元素在物理地址上也是相邻的 数组名是数组首元素的内存首地址数组名是数组首元素的内存首地址 为数组为数组a分配

4、的连续的存储单元分配的连续的存储单元a0a1a2数组在内存的首地址:数组在内存的首地址:a 或或 ?eg:int a3 数组元素为:数组元素为:a0、a1、a2面向对象程序设计5内蒙古工业大学数组p数组的存储数组的存储 二维数组元素在内存按行存放二维数组元素在内存按行存放 相当于一个两行三列的矩阵相当于一个两行三列的矩阵 先放第一行,再放第二行先放第一行,再放第二行 每行元素按列下标由小到大顺次存放每行元素按列下标由小到大顺次存放eg:int a23数组元素为:数组元素为:a00、a01、a02、a10、a11、a12a00a01a02a10a12a11面向对象程序设计6内蒙古工业大学数组p

5、数组的初始化数组的初始化 初始化:声明数组时给全部或部分数组元素赋初始化:声明数组时给全部或部分数组元素赋初值初值 基本类型数组基本类型数组:给数组元素赋值:给数组元素赋值 对象数组对象数组:调用构造函数调用构造函数1、在定义数组时对数组中的全部元素赋初值、在定义数组时对数组中的全部元素赋初值eg:int a5=1,2,3,7,6; 2、给数组的前几个元素赋初值,其余元素自、给数组的前几个元素赋初值,其余元素自动初始化为动初始化为0eg:int b5=1,2,3; = int b5=1,2,3,0,03、定义数组时不指定数组的长度,而用花括、定义数组时不指定数组的长度,而用花括号中的初值个数决

6、定数组长度号中的初值个数决定数组长度eg:int a=1,2,3,7,6; = int a5=1,2,3,7,6;面向对象程序设计7内蒙古工业大学数组p 实例分析实例分析#include using namespace std;void main() int A5,B5;for( )Ai=i*2-1;B5-i-1=Ai;for( )coutAi =Ai;cout Bi= Biendl;1、分析程序的运行结果、分析程序的运行结果2、填空、填空int i=0;i5;i+int i=0;i5;i+面向对象程序设计8内蒙古工业大学数组p 数组作为函数参数数组作为函数参数 函数的参数传递方式函数的参数传

7、递方式 值传递值传递:函数调用时,为形参分配单元,并将实参:函数调用时,为形参分配单元,并将实参的值复制到形参中;调用结束,形参单元被释放,的值复制到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值实参单元仍保留并维持原值特点特点:形参与实参占用形参与实参占用不同不同的内存单元;的内存单元; “单向单向”传递传递 地址传递地址传递:函数调用时,将数据的存储地址作为参:函数调用时,将数据的存储地址作为参数传递给形参数传递给形参特点:形参与实参占用特点:形参与实参占用同样同样的存储单元;的存储单元; “双向双向”传递传递面向对象程序设计9内蒙古工业大学数组p 数组作为函数参数数组作为函数

8、参数 数组元素数组元素和和数组名数组名都可作为函数的参数都可作为函数的参数 数组元素做实参数组元素做实参:值传递:值传递 数组名做实参数组名做实参:地址传递:地址传递实参和形参都应该是数组名实参和形参都应该是数组名形参数组和实参数组的首地址重合形参数组和实参数组的首地址重合面向对象程序设计10内蒙古工业大学数组p 实例分析一实例分析一#include using namespace std;double avrg( )double x=0.0;for(int i=0;in;i+)x+=ai;return x/n;void main()int a3=2,7,10,b5=3,12,5,6,8;co

9、utavrg(3,a), avrg(5,b)endl;1、分析程序的运行结果、分析程序的运行结果2、填空、填空int n,int a面向对象程序设计11内蒙古工业大学数组p 实例分析二实例分析二#include using namespace std;void RowSum(int A4, int nrow)for (int i=0; inrow; i+)for(int j=1; j4; j+)Ai0+=Aij; void main( )int Table34 = 1,2,3,4,2,3,4,5,3,4,5,6;for (int i=0; i3; i+)for (int j=0; j4; j+

10、) coutTableij ;coutendl;RowSum( );for ( i = 0; i 3; i+)coutsum of row i:Tablei0endl;1、分析程序的运行结果、分析程序的运行结果2、填空、填空Table,3面向对象程序设计12内蒙古工业大学数组p 对象数组对象数组 数组元素是数组元素是同一个类的对象同一个类的对象的数组的数组 声明声明 类名类名 数组名数组名下标表达式下标表达式 eg: Date dates7; 引用引用 数组名数组名下标下标.成员名成员名 eg: dates2.year; 初始化初始化 调用调用构造函数构造函数对每个元素初始化对每个元素初始化1

11、、如声明数组时,给每个元素初值,则调用形参类型匹配的构造函数、如声明数组时,给每个元素初值,则调用形参类型匹配的构造函数Date d2=Date(2010,10,11),Date(2010,9,20)2、如果声明数组时,没指定初始值,则调用默认构造函数、如果声明数组时,没指定初始值,则调用默认构造函数Date d2=Date(2010,10,11)面向对象程序设计13内蒙古工业大学数组p 实例分析实例分析class Datepublic:Date()year=month=day=0;Date(int y,int m,int d) year=y; month=m; day=d; void pri

12、nt()coutyear=year month=month day=dayendl;private:int year,month,day;void main()Date d5=Date(2010,10,1),Date(2010,10,2),Date(2010,10,3);d3=Date(2010,10,4);d4=Date(2010,10,5);for(int i=0;i5;i+)di.print();1、分析程序的运行结果、分析程序的运行结果2、修改后分析、修改后分析面向对象程序设计14内蒙古工业大学指针p 内存的地址内存的地址 内存中存储单元的内存中存储单元的编号编号 存储器中的一个字节称

13、为一个存储单元存储器中的一个字节称为一个存储单元 每个存储单元都有一个唯一的地址每个存储单元都有一个唯一的地址 计算机中所有的数据都是存放在内存单元中的计算机中所有的数据都是存放在内存单元中的p 变量的地址变量的地址 如定义了变量,编译时为该变量分配内存单元如定义了变量,编译时为该变量分配内存单元 变量所占用内存空间的变量所占用内存空间的第一个字节的地址第一个字节的地址面向对象程序设计15内蒙古工业大学指针p 数据在内存中的存储、读取过程数据在内存中的存储、读取过程例如:整型变量例如:整型变量 i , j , k ; 在编译时为在编译时为变量分配内存,内存示意图如图所示变量分配内存,内存示意图

14、如图所示 假设变量假设变量 i,j,k 被分配的内存被分配的内存地址分别为地址分别为2000,2002,2004 给变量赋值为给变量赋值为 i=3; j=6; k=9; 直接访问:直接存取变量所占直接访问:直接存取变量所占内存单元的内容内存单元的内容内存中用户数据区内存中用户数据区2000200220043010内存地内存地址编号址编号ijk。369如果读取变量如果读取变量 i i的值,直接到的值,直接到为变量为变量i i分配的存储单元分配的存储单元(20002000、20012001字节)中取出字节)中取出i i的值(的值(3 3)即可)即可间接访问:首先取出存放该变间接访问:首先取出存放该

15、变量的内存单元的地址,然后再从量的内存单元的地址,然后再从该地址中取出相应内容该地址中取出相应内容先将变量先将变量 i 的地址存放在另一的地址存放在另一个变量个变量p中,如果读取变量中,如果读取变量 i的的值,先找到变量值,先找到变量p,从,从p中取出中取出内容(内容(2000,即变量,即变量i的起始的起始地址),然后到地址),然后到2000、2001字节中取出字节中取出i的值(的值(3)2000变量变量P面向对象程序设计16内蒙古工业大学指针p 指针变量的声明指针变量的声明 变量的指针变量的指针变量的地址变量的地址 指针变量指针变量:存放另一变量地址的变量存放另一变量地址的变量 指针变量的值

16、是内存地址指针变量的值是内存地址 声明声明 数据类型数据类型 *指针名指针名 *表示这里声明的是指针类型的变量表示这里声明的是指针类型的变量 数据类型可以是任意类型,数据类型可以是任意类型,所指向对象的类型所指向对象的类型 指针本身的值默认类型是指针本身的值默认类型是unsigned long integ : int * pointer;面向对象程序设计17内蒙古工业大学指针p 与地址相关的运算符与地址相关的运算符“ *”和和“&” &地址运算符:例:地址运算符:例:int var; 则则&var 表示变量表示变量var在内存中的起始地址在内存中的起始地址引用引用例:例:int &var; *

17、指针标识符:指针标识符:例:例:int a=1,*ip; 指针运算符指针运算符:*ip=a; 则则*ip表示指针所指向变量表示指针所指向变量a的值。的值。面向对象程序设计18内蒙古工业大学指针p 指针的赋值指针的赋值 指针必须先赋值后引用指针必须先赋值后引用 声明指针的同时进行初始化赋值声明指针的同时进行初始化赋值 数据类型数据类型 *指针名指针名=初始地址初始地址;int i;int *p=&i; 声明之后,单独使用赋值语句声明之后,单独使用赋值语句 指针名指针名=地址地址;int i,*p;p=&i;例:例:6_5面向对象程序设计19内蒙古工业大学指针p 指针的赋值指针的赋值 可以声明指向

18、常量的指针,不能通过指针改变所指可以声明指向常量的指针,不能通过指针改变所指对象的值,但指针本身可改变,可指向另外的对象。对象的值,但指针本身可改变,可指向另外的对象。 可以声明指针类型的常量,这时指针本身的值不能可以声明指针类型的常量,这时指针本身的值不能改变。改变。 指针的值只能赋给相同类型的指针,但指针的值只能赋给相同类型的指针,但void类型的类型的指针可存储任何类型的对象地址。指针可存储任何类型的对象地址。int a=3,b=5;const int *p=&a;p=&b;*p=8;Xint a=3,b=5;int *const p2=&a;p2=&b;Xvoid *pv;int *p

19、int,i=9;pv=&i;pint=(int *)pv;面向对象程序设计20内蒙古工业大学指针p 指针的运算指针的运算 算术运算算术运算 指针与整数的加减运算指针与整数的加减运算 指针相减运算指针相减运算 指针加指针加1和减和减1运算运算p+(-)np+(-)nn n:相对于指针所指当前位置的位移量:相对于指针所指当前位置的位移量含义含义:使指针指向当前所指位置前面或后面:使指针指向当前所指位置前面或后面第第n n个数据个数据的位置的位置实际内存地址值实际内存地址值:( (p)+/-np)+/-n* *sizeofsizeof( (指针数据类型指针数据类型) )如果如果p p,q q指向同一

20、数组成员,则指向同一数组成员,则p-qp-q表示两者之间元表示两者之间元素个数素个数指针加指针加1 1:指向后一个数据的位置:指向后一个数据的位置指针减指针减1 1:指向前一个数据的位置:指向前一个数据的位置面向对象程序设计21内蒙古工业大学指针p 指针的运算指针的运算 关系运算关系运算,=,=,!=例如例如p p和和q q是相同类型的指针变量是相同类型的指针变量pq:pq:若为真,则若为真,则p p所指目标变量在所指目标变量在q q所指目标变量之前所指目标变量之前 若为假,则若为假,则p p所指目标变量在所指目标变量在q q所指目标变量之后所指目标变量之后面向对象程序设计22内蒙古工业大学指

21、针p 用指针处理数组元素用指针处理数组元素声明与赋值声明与赋值 例:例: int a10, *pa; pa=&a0; 或或 pa=a;通过指针引用数组元素通过指针引用数组元素 *pa就是就是a0,*(pa+1)就是就是a1,. ,*(pa+i)就就是是ai。 ai, *(pa+i), *(a+i), pai都是等效的。都是等效的。 不能写不能写 a+,因为,因为a是数组首地址是常量。是数组首地址是常量。面向对象程序设计23内蒙古工业大学指针p 用指针处理数组元素用指针处理数组元素 例:设有一个例:设有一个int型数组型数组a,有,有10个元素,用三个元素,用三种方法输出各元素。种方法输出各元素

22、。 方法一:使用数组名和下标方法一:使用数组名和下标ai 方法二:使用数组名和指针运算方法二:使用数组名和指针运算*a+i 方法三:使用指针变量方法三:使用指针变量*p见例见例6_7面向对象程序设计24内蒙古工业大学指针p 指针数组指针数组 数组的每个元素都是指针变量数组的每个元素都是指针变量 数组元素都必须是同一类型的指针数组元素都必须是同一类型的指针 声明声明 类型类型 *数组名数组名下标表达式下标表达式int *p3由由p0,p1,p2三个指针组成三个指针组成面向对象程序设计25内蒙古工业大学指针p 指针数组指针数组例:用指针数组存放单位矩阵例:用指针数组存放单位矩阵#include u

23、sing namespace std;void main()int line1=1,0,0; int line2=0,1,0; int line3=0,0,1; int *p_line3;p_line0=line1;p_line1=line2;p_line2=line3;/输出单位矩阵输出单位矩阵 coutMatrix test:endl;for(int i=0;i3;i+) for(int j=0;j3;j+) coutp_lineij ; coutendl;面向对象程序设计26内蒙古工业大学指针p 用指针作为函数参数用指针作为函数参数使实参与形参指针指向共同的内存空间使实参与形参指针指向共

24、同的内存空间减少函数调用时数据传递的开销减少函数调用时数据传递的开销例:读入三个浮点数,将整数部分和小数部分分例:读入三个浮点数,将整数部分和小数部分分别输出别输出方法一:用方法一:用指针指针做函数的形参(例做函数的形参(例6_10)方法二:用方法二:用引用引用做函数的形参(例做函数的形参(例6_10_1)面向对象程序设计27内蒙古工业大学指针p 用指针作为函数参数用指针作为函数参数方法一:用方法一:用指针指针做函数的形参做函数的形参#include using namespace std;/指针做为函数的形参指针做为函数的形参void splitfloat( )*intpart = int(

25、x);*fracpart = x-*intpart;方法二:用方法二:用引用引用做函数的形参做函数的形参float x, int *intpart, float *fracpartfloat x, int &intpart, float &fracpartintpart = int(x);fracpart = x-intpart;面向对象程序设计28内蒙古工业大学指针p 用指针作为函数参数用指针作为函数参数void main()float x,f;int n;coutenter 3 float number:endl;for(int i=0;ix;splitfloat( x, &n, &f )

26、;coutinteger=n,fraction=f成员名成员名例如:例如:Point *p,p1; p=&p1; p-getx() 相当于相当于 (*p).getx();面向对象程序设计32内蒙古工业大学指针p 对象指针对象指针对象指针举例对象指针举例int main() Point A(5,10); Point *ptr; ptr=&A; coutGetX()endl; coutA.GetX()*类成员指针名类成员指针名面向对象程序设计36内蒙古工业大学指针p 对象指针对象指针 指向类的非静态成员的指针指向类的非静态成员的指针 指向成员函数的指针指向成员函数的指针赋值赋值指针名指针名=&类名

27、类名:函数成员名函数成员名引用引用(对象名对象名.* 类成员指针名类成员指针名)(参数表参数表)或:或: (对象指针名对象指针名*类成员指针名类成员指针名)(参数表参数表)eg6_1面向对象程序设计37内蒙古工业大学指针p 对象指针对象指针访问对象的公有成员函数的不同方式访问对象的公有成员函数的不同方式void main()/主函数主函数Point A(4,5);/声明对象声明对象APoint *p1=&A; /声明对象指针并初始化声明对象指针并初始化 int (Point:*p_GetX)()=Point:GetX; /声明成员函数指针并初始声明成员函数指针并初始化化 coutA.GetX(

28、)endl; /使用使用对象名对象名访问成员函数访问成员函数coutGetX)()endl; /使用使用对象指针对象指针访问成员函数访问成员函数 cout(A.*p_GetX)()endl; /使用使用成员函数指针成员函数指针访问成员函数访问成员函数 面向对象程序设计38内蒙古工业大学指针p 对象指针对象指针 指向类的静态成员的指针指向类的静态成员的指针对类的静态成员的访问不依赖于对象对类的静态成员的访问不依赖于对象可以用普通的指针来指向和访问静态成员可以用普通的指针来指向和访问静态成员例例6-14(P184)通过指针访问类的静态数据成员通过指针访问类的静态数据成员例例6-15(P185)通过

29、指针访问类的静态成员函数通过指针访问类的静态成员函数面向对象程序设计39内蒙古工业大学动态内存分配p 动态内存分配技术在程序运行中按照实际需动态内存分配技术在程序运行中按照实际需要申请适量内存要申请适量内存 使用结束后可以释放使用结束后可以释放 存储和释放的存储单元称为堆对象存储和释放的存储单元称为堆对象 申请申请-建立建立 释放释放-删除删除面向对象程序设计40内蒙古工业大学动态内存分配p new运算和运算和delete运算运算 new:动态分配内存:动态分配内存 new 类型类型T (初值列表初值列表); 功能:在程序执行期间,申请用于存放功能:在程序执行期间,申请用于存放T类型对象的内存

30、空类型对象的内存空间,并依初值列表赋以初值。间,并依初值列表赋以初值。 结果值结果值:成功:成功:T类型的指针,指向新分配的内存类型的指针,指向新分配的内存的首地址的首地址。失败:失败:0(NULL)面向对象程序设计41内蒙古工业大学动态内存分配p new运算和运算和delete运算运算 delete:删除由:删除由new建立的对象,释放指针所建立的对象,释放指针所指向的内存空间指向的内存空间 delete 指针指针p;功能:释放指针功能:释放指针P P所指向的内存。所指向的内存。P P必须是必须是newnew操作的返回值。操作的返回值。注意:用注意:用newnew建立的对象,只能使用建立的对

31、象,只能使用deletedelete进行一次删除操进行一次删除操作作。动态创建对象动态创建对象:6_16面向对象程序设计42内蒙古工业大学动态内存分配p 动态创建对象数组动态创建对象数组 使用运算符使用运算符newnew可以创建数组类型的对象可以创建数组类型的对象 语法:语法: new new 类型名类型名TT下标表达式下标表达式 ; 动态为数组分配内存时不能指定数组元素的初值动态为数组分配内存时不能指定数组元素的初值 如果用如果用newnew建立的数组,用建立的数组,用deletedelete删除时在指针删除时在指针名前加名前加“” delete delete 指针名指针名动态创建对象数组动

32、态创建对象数组例例6_17面向对象程序设计43内蒙古工业大学动态内存分配p 动态内存分配与释放函数动态内存分配与释放函数动态存储分配函数动态存储分配函数 原型:原型: void *void *mallocmalloc( size );( size ); 参数参数sizesize:欲分配的字节数:欲分配的字节数 返回值:返回值:成功,则返回成功,则返回voidvoid型指针。型指针。失败,则返回空指针。失败,则返回空指针。 头文件:头文件: 和和 或或 和和 面向对象程序设计44内蒙古工业大学动态内存分配p 动态内存分配与释放函数动态内存分配与释放函数动态内存释放函数动态内存释放函数原型:原型:

33、 void free( void *void free( void *memblockmemblock ); );参数参数memblockmemblock: 指针,指向需释放的内存。指针,指向需释放的内存。头文件:头文件: 和和 或或 和和 面向对象程序设计45内蒙古工业大学字符串 字符串常量字符串常量 一对双引号括起来的字符序列,例如:一对双引号括起来的字符序列,例如:china“ 按串中字符的排列次序顺序存放按串中字符的排列次序顺序存放 每个字符占一个字节,末尾以每个字符占一个字节,末尾以0作为结尾标记作为结尾标记 存储和处理字符串数据存储和处理字符串数据 字符数组字符数组 string类

34、类面向对象程序设计46内蒙古工业大学字符串p 用字符数组存储和处理字符串用字符数组存储和处理字符串 字符数组字符数组 数组元素是数组元素是char型的数组型的数组 一维数组存放一个字符串一维数组存放一个字符串 多维数组存放多个字符串多维数组存放多个字符串char s14=a,b,c,d;char s25=a,b,c,d,0;char s25=abcd;char s25=abcde;char s2=abcde; char ss34=a,b,c,0,m,n,p,0,x,y,z,0;char ss34=abc,mnp,xyz;char ss4=abc,mnp,xyz;X面向对象程序设计47内蒙古工业

35、大学字符串p 用字符数组存储和处理字符串用字符数组存储和处理字符串 用字符数组存放字符串用字符数组存放字符串 输入和输出输入和输出逐个输入、输出逐个输入、输出整个字符串一次输入或输出整个字符串一次输入或输出 注意注意输出字符不包括输出字符不包括 0输出字符串时,输出项是字符数组名,输出时遇到输出字符串时,输出项是字符数组名,输出时遇到0结束。结束。输入多个字符串时,以空格分隔;输入单个字符串时其中输入多个字符串时,以空格分隔;输入单个字符串时其中 不能有空格。不能有空格。char c =china;for(int i=0;i5;i+)coutci;coutstr1str2str3; 运行时输入

36、数据:运行时输入数据: How are you?内存中变量状态如下: str1: H o w 0 str2: a r e 0 str3: y o u ? 0面向对象程序设计49内蒙古工业大学字符串p 用字符数组存储和处理字符串用字符数组存储和处理字符串用字符数组存放字符串用字符数组存放字符串若改为:若改为: static char str13; cinstr; 运行时输入数据:运行时输入数据: How are you?内存中变量内存中变量 strstr 内容如下内容如下: str: H o w 0 面向对象程序设计50内蒙古工业大学字符串p 用字符数组存储和处理字符串用字符数组存储和处理字符串

37、用字符数组存放字符串用字符数组存放字符串字符串处理函数字符串处理函数strcat(连接)(连接)strcpy (复制)(复制)strcmp (比较)(比较)strlen (求长度)(求长度)strlwr (转换为小写)(转换为小写)strupr (转换为大写)(转换为大写) 包含头文件包含头文件cstring面向对象程序设计51内蒙古工业大学字符串p string类类 提供了对字符串进行处理所需要的操作提供了对字符串进行处理所需要的操作 需包含头文件需包含头文件string 封装了串的属性及访问属性的服务封装了串的属性及访问属性的服务查找、分配、连接、追加查找、分配、连接、追加 声明声明: s

38、tring 字符串变量名字符串变量名;面向对象程序设计52内蒙古工业大学字符串p string类类 构造函数原型构造函数原型string();/建立一个长度为建立一个长度为0的串的串string(const string &s);/拷贝初始化构造函数拷贝初始化构造函数string(const char *s);/用指针用指针s所指向的字符串初始化所指向的字符串初始化string类对象类对象string(const string &s,unsigned int pos,unsigned int n);/将对象将对象s中的串从位置中的串从位置pos开始取开始取n个字符,用来初始化个字符,用来初始化

39、string类对象类对象string(const char *s,unsigned int n);/用指针用指针s所指向的字符串中的前所指向的字符串中的前n个字符初始化个字符初始化string类对象类对象string(unsigned int n,char c);/将参数将参数c中的字符重复中的字符重复n次,用来初始化次,用来初始化string类的对象类的对象面向对象程序设计53内蒙古工业大学字符串p string类类 常用成员函数常用成员函数string append(const char *s); /将字符串将字符串s添加在本串尾添加在本串尾string assign(const char

40、 *s);/将将s所指字符串赋值给本对象所指字符串赋值给本对象int compare(const string &str)const; 比较本串和比较本串和str串的大小串的大小string &insert(unsigned int p0,const char *s);/将将s指向的字符串插入本串中指向的字符串插入本串中p0之前之前string substr(unsigned int pos,unsigned int n) const;/取本串中从取本串中从p0开始的开始的n个字符,构成新的个字符,构成新的string类对象返回类对象返回unsigned int find(const basi

41、c_string &str)const;/查找并返回查找并返回str在本串中第一次出现的位置在本串中第一次出现的位置unsigned int length() const;/返回串的长度返回串的长度void swap(string &str);/将本串与将本串与str字符串进行交换字符串进行交换面向对象程序设计54内蒙古工业大学字符串p string类类 string类的操作符类的操作符操作符操作符示例示例注释注释+ +s+ts+t将串将串s s和和t t连成一个新串连成一个新串= =s=ts=t用用t t更新更新s s+=+=s+=ts+=t等价于等价于s=s=s+ts+t=s=ts=t判断

42、判断s s与与t t是否相等是否相等!=!=s!=ts!=t判断判断s s与与t t是否不等是否不等 stst判断判断s s是否小于是否小于t t=s=ts stst判断判断s s是否大于是否大于t t=s=ts=t判断判断s s是否大于或等于是否大于或等于t tsisi 访问串中下标为访问串中下标为i i的字符的字符面向对象程序设计55内蒙古工业大学字符串p string类类#include #include using namespace std ;void trueFalse(int x) cout (x? True: False) endl;面向对象程序设计56内蒙古工业大学字符串void main() string S1=DEF, S2=123; cout S1 is S1 endl; cout S2 is S2 endl; coutlength of S2:S2.length()endl; cout S1=S2 returned ; trueFalse(S1=S2); S2+=S1; coutS2=S2+S1:S2endl; coutlength of S2:S2.length()endl;面向对象程序设计57内蒙古工业大学

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号