指针与字符串1

指针与字符串1

ID:37784359

大小:497.81 KB

页数:59页

时间:2019-05-31

指针与字符串1_第1页
指针与字符串1_第2页
指针与字符串1_第3页
指针与字符串1_第4页
指针与字符串1_第5页
资源描述:

《指针与字符串1》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、高级语言程序设计授课教师:电话:邮箱:授课班级:电子商务2009级第6章指针与字符串6.1指针的概念6.2指针型变量6.3指针与数组6.4指针与函数6.5指针与类、对象6.7动态内存分配与new和delete运算符6.8string类第6章指针与字符串C++语言拥有在运行时获得变量地址和操纵地址的能力,这种可用来操纵地址的变量类型就是指针。指针可以用于数组、内存的访问,还可作为函数的参数6.1指针的概念指针是变量,是用来专门存放内存地址的变量。为了说清楚指针变量,先讨论对变量的访问(存取)方式。按变量的地址直接存取变量的方法称为“直接访问”方式。存贮变量的内存空间的首地址称为该变量的地址。如果

2、将一个变量的地址放在另一个变量中,则存放地址的变量称为指针(pointer)型变量。这样存取变量,也可以间接的由指针变量取得该变量的地址进行,称为“间接访问”方式。由于指针变量中的值是另一个变量的地址,我们习惯上形象地称指针变量指向该变量。指针变量中的值也简称为指针,所以指针就是地址。设a是整型变量,其值为5,其分配的内存地址为1000H(H是16进制后缀,汇编语言表示方式);又设pa是整型指针变量,其值为1000H,可以说指针pa指向变量a。6.2指针型变量1.如何定义指针指针类型变量定义格式如下:存贮类型指向类型*变量名1,*变量名2…;这里*是一个定义变量为指针的说明符,而不是指针变量的

3、一部分,更不是乘号。inta=5,*pa;//a定义为整型变量,pa定义为整型变量指针double*p;//p定义为双精度实型变量指针char*p3;//p3定义为字符型变量指针int(*p4)[5];p4定义为一维数组的指针,指向的数组有5个元素int**p6;p6定义为一个整型变量指针的指针,即p6的值是一个指针型变量的地址,那个指针变量指向一个整型变量,换句话说,p6是一个二级指针变量。2.指针的赋值为了给指针赋值,C++中提供了一个取变量地址运算符:&,作用于一个变量、对象、数组元素等,操作的结果是获得该数据的地址。对于数组,数组名就代表该数组内存首地址。如:inta,b[5];//定

4、义整型变量a和整型数组b,系统给它们分配地址int*p1,*p2,*p3;//定义整型指针p1,p2,p3,并给它们分配地址p1=&a;//赋给p1的值为a的地址p2=&b[0];//赋给p2的值为b[0]的地址p3=b;//赋给p3的值为数组b的首地址,实际上p2、p3的值一样指针变量必须先赋值再使用。对指针变量决不可任意赋一个非负整数。指针变量中存放的是在内存中可寻址的变量或对象的首地址,而变量或对象的内存地址是由系统分配的。程序员不能代替系统给变量分配内存,系统不允许给指针变量随意赋一个地址值,只能取系统分配的变量地址赋给指针变量。2.指针的赋值指针赋值注意事项:①指针值是地址②指针只能

5、指向定义时规定的类型如有定义:int*p;doublex;则赋值语句:p=&x;是错误的!③未赋过值的指针,绝对不可使用④可以将一个指针的值赋给另一个指针,如:inta,*p1=&a,*p2;p2=p1;//p1的值是a的地址,p1的值又赋给p2⑤暂时不用的指针可赋值为0,表示空指针。这表示当前该指针并不指向该类型的任何一个变量(对象),并不是指向地址为0的内存空间。3.指针的运算使用指针变量可以间接访问指针指向的单元,如有定义:inta,*p=&a;则下面两组语句的作用完全相同:{cin>>a;cout<>*p;cout<<*p;}其中运算符*称为间接引用(derefere

6、nce)运算符,作用于一个指针类型的变量,访问该指针所指向的内存数据。实际上例中的a与*p完全是一回事。指针的运算共有4类:赋值运算(包括一个指针赋给另一个指针、同类型表达式的值赋给指针指向的变量)指针加减整数(实际加减的是指向类型长度的整数倍)同类型指针相减同类型指针比较【补充例1】逆序输出字符串#includeintstrlen1(char[]);voidmain(){chars[]="abcdefg";char*p;intn=strlen1(s);//声明调用后面定义的函数for(p=s+n-1;p+1!=s;p--)cout<<*p;cout<

7、tstrlen1(chara[])//计算给定字符串的字符个数(字符串长度){char*p=a;inti=0;while(a[i++]!='')p++;//移动指针,使其指到串结束标志returnp-a;//两个地址相减,结果为串长度}【补充例2】指针运算例子#includevoidmain(){inti=6,*pi1=&i,*pi2;doubled=1.5,*pd1=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。