指针类型及使用.ppt

指针类型及使用.ppt

ID:48152970

大小:139.50 KB

页数:55页

时间:2020-01-17

指针类型及使用.ppt_第1页
指针类型及使用.ppt_第2页
指针类型及使用.ppt_第3页
指针类型及使用.ppt_第4页
指针类型及使用.ppt_第5页
资源描述:

《指针类型及使用.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、2.8指针类型及使用2.8.4指针与数组所谓数组的指针即整个数组在内存中的起始地址,而数组元素的指针是数组中某一元素所占存储单元的地址。以前我们引用数组元素时是利用数组的下标进行的,当我们学到指针后,访问数组元素就可以利用指针来进行,即可以先使一指针变量指向某一数组元素,然后通过该指针变量对它所指向的数组元素进行操作。利用指针法能使目标程序质量高,占内存少,运行速度快。2.8.4.1指向数组元素的指针变量的定义与赋值指向数组元素的指针变量的定义与以前定义指针变量的方法相同,只要注意指针变量定义时的类型要与所要指向的数组的类型一致即可。2.8指针类型及

2、使用如:inta[10];int*p;p=&a[0];//把数组元素a[0]的地址赋给指针变量p。C++语言中规定:数组名就代表数组首地址。也就是数组第0号元素的地址。如:inta[10];int*p;p=&a[0];/*与p=a;是等价的*/p=&a[0];与p=a;是等价的。但要注意,其作用是把数组a的起始地址赋给指针变量p,而不是把数组a的各元素的地址赋给p。2.8指针类型及使用2.8.4.2通过指针变量使用数组元素假设p为指向某一数组元素的指针变量。C++语言规定:p+1指向数组的下一个元素。(注意不是单纯的p加1)。设定义了一个数组a[10

3、],p的初值为&a[0],即此时p指向a[0]元素,则:(1)p+1或a+1就是a[1]元素的存储地址,即它们都指向数组的第1号元素a[1]。所以*(p+1)或*(a+1)就与a[1]是等价的。(2)p+i或a+i就是a[i]元素的存储地址,即它们都指向数组的第i号元素a[i]。所以*(p+i)或*(a+i)就与a[i]是等价的。实际上,在编译时,编译程序把a[i]处理成*(a+i)。因此,利用此方法就可访问到数组元素。如:2.8指针类型及使用main(){inta[0];int*p,i;for(i=1;i<10;i++)cin>>a[i];p=a;

4、for(i=0;i<10;i++)cout<<*(p+i);//等价于cout<

5、加1(即指向下一个元素);*(++p)是先使p加1(即使p指向下一个元素),然后再作*运算。2.8指针类型及使用如:若p的初值为a,(即&a[0]),输出*(p++)时,得到a[0]的值,而输出*(++p),则得到a[1]的值。(4)(*p)++表示p所指的元素值加1,对上例来说a[0]++。(5)对于指针的--(自减)运算原理同上。(6)只有指向数组元素的指针变量才可进行自加或自减运算。2.8.4.3数组名作函数参数数组名可以用来作为实参和形参。用数组名作实参,在调用函数时实际上是把数组的首地址传递给形参,这样,实参数组就与形参数组共占同一段内存,

6、那么形参数组中元素的值发生变化后,实参数组中各元素的值也发生变化,但这种变化并不是从形参传回实参的,而是2.8指针类型及使用由于形参与实参数共享同一段内存而造成的.利用数组名作为函数的参数时可以用以下四种情况实现:(1)形参和实参都用数组名(2)实参用数组名,形参用指针变量(3)实参和形参都用指针变量(4)实参用指针变量,形参用数组名【例2-19】函数func是实现数组排序的过程。主函数将8个整数读入,调用func排序并输出结果。#includevoidfunc(int*);//func的函数原型voidmain()2.8指针

7、类型及使用{intdata[8];inti;cout<<"输入8个数:";for(i=0;i<8;i++)cin>>data[i];func(data);cout<<"排序输出:";for(i=0;i<8;i++)cout<

8、}2.8指针类型及使用2.8.5指针与字符串2.8.5.1字符串的指针和指向符串的指针变量在c++程序中,可

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

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

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