《指针和引用》PPT课件.ppt

上传人:za****8 文档编号:12674003 上传时间:2020-05-13 格式:PPT 页数:58 大小:899.51KB
返回 下载 相关 举报
《指针和引用》PPT课件.ppt_第1页
第1页 / 共58页
《指针和引用》PPT课件.ppt_第2页
第2页 / 共58页
《指针和引用》PPT课件.ppt_第3页
第3页 / 共58页
点击查看更多>>
资源描述
指针和引用,指针的概念,intx30,1,2;对数组元素xi的引用,即为对(x对应地址sizeof(int)i)空间的值的引用系统通过存储空间地址访问空间所存储数据。指针,。(未知内容空间),x,用户无权限访问,系统报错!,指针和指针变量,变量的指针:变量的地址指针变量:定义一个变量,用来存放一个内存单元的地址,称为一个指针变量(简称为指针)。,指针变量的定义,格式:*例:int*p;p是指向整型数据的指针变量,p只能存放整型数据的地址,大小为4个字节(地址总是4个字节的);一个指针变量只能指向一种类型的变量;未指定指针变量的值时,其值不定(静态、文件类型除外)定义时可初始化,如int*p=,cout“*p=”*pn;*p1+=2;cout“*p=”*pn;,p1,C+Programming,指针变量的赋值运算(1),【例8.2】指针的赋值运算运行该程序,输出结果,#includevoidmain()inta=2,b=3;int*pi1,*pi2;pi1=,4,C+Programming,*pi1=2*pi2=3pi1=0 x0065FDF4pi2=0 x0065FDF0*pi1=4*pi2=4pi1=0 x0065FDF4pi2=0 x0065FDF4,指针变量可执行的运算之算术运算,指针只进行加减运算自增或自减运算指针加或减一个整数pn的意义是pnsizeof(T),p:指针名n:加减的整数T:指针类型,指针变量可执行的运算之算术运算,指针只进行加减运算自增或自减运算指针加或减一个整数pn的意义是pnsizeof(T)p=p+2;p+2*sizeof(int),p,指针变量可执行的运算之算术运算,指针只进行加减运算自增或自减运算指针加或减一个整数pn的意义是pnsizeof(T)p=p+2;p+2*sizeof(int)cout*(p-1);,p,P-1,指针变量可执行的运算之关系运算,要求同类型的指针变量进行比较,两个指针相同,两指针指向相同的内存单元两个指针不同,两指针指向不同的内存单元与0比较:表示指针变量的值是否为空。,优先级,指针运算符“*”,取地址运算符“则:p1=,C+Programming,#includevoidmain()inta8=10,20,30,40,50,60,70,80;int*pi;pi=/E,运行该程序,输出结果为:*pi=20*pi+=10*(pi+)=10*+pi=20(*pi)+=10+*pi=12,C+Programming,#includevoidmain()inta8=1,2,3,4,5,6,7,8;int*pi;pi=0;if(pi=0)/Acout指针pi为空!ab;p1=,指针和数组,数组的指针是指数组的起始地址,数组元素的指针是数组元素的地址。引用数组元素可以用下标法(如a3),也可以用指针法,即通过指向数组元素的指针找到所需的元素,使用指针占用内存少,运行速度快,目标程序质量高。,指针和一维数组,inta10,*p,*q;p=a、p、q都是数组a的起始地址,但是a没有空间,可视为常量,不能做自增、自减操作!,q,指针和一维数组,(1)p+i和a+i就是ai的地址,实际地址为:a+i*sizeof(int);(2)*(p+i)或*(a+i)就是p+i或a+i所指向的数组元素,即ai或pi;(3)可以对指针变量进行运算,但不允许对数组名进行运算。用指针访问数组元素时,编译程序不作下标是否越界的检查。,指针和一维数组(例),(1)执行下列语句后,*(p+2)的值为()chars=“ab”,*p;p=s;(2)具有相同类型的指针变量p和数组a,不能进行的操作是()Ap=aB.p=a0C.p=in-1;i+)for(j=i+1;jn;j+)if(ajai)t=ai;ai=aj;aj=t;,int*p=a;for(i=0;in-1;i+)for(j=i+1;jn;j+)if(*(p+j)*(p+i)t=*(p+i);*(p+i)=*(p+j)*(p+j)=t;,课堂练习用指针查找一维数组中的最大值,inta15=1,3,2,4,5,7,2,9,60,43,21,23,56,34,57;int*p_max=_;for(i=1;in-1;i+)if(_ai)p_max=_;cout“maxoneis:”_;,指针和二维数组,二维数组的各个元素是按行连续存放的二维数组可以看成特殊的一维数组,这个特殊的一维数组的元素又是一个一维数组。,C+Programming,假设有如下的一个二维数组:inta43=1,2,3,4,5,6,7,8,9,10,11,12;,1,2,3,4,5,6,7,8,9,10,11,12,0,1,2,0,1,2,3,a,a+1,a+2,a+3,行地址,a0,a0+j,j,i,a1,a2,a3,a1+j,a2+j,a3+j,a+i,元素,*(a0+j),*(a1+j),*(a2+j),*(a3+j),ai+j,*(ai+j),*(a+i),*(a+i)+j,*(*(a+i)+j),指针和二维数组二维数组的相关地址,“*”出现在行地址前,将地址“降”为元素地址“对字符型指针赋值前,不允许对指针输入字符串,指针和字符串注意点,字符串不能直接赋值给字符数组,但字符串可直接赋值给字符指针char*s;s=“ABC”;字符数组的起始地址不允许改变,指针的值可以改变不能将指针赋给数组名,可以将数组名赋给字符型指针,课堂练习,设有“chara6,*p=a;”下列表达式中正确的赋值语句是()Aa6=“Hello”;B.a=“Hello”;C.*p=“Hello”;D.p=”Hello”;程序的输出是?voidmain()char*p1=“abcd”;charstr50=“xyz”strcpy(str+2,p1+2);coutstrendl;,课堂练习,voidmain(void)charstr=abcdca123123;intcount128,i;char*p=str;for(i=0;i127;i+)counti=0;while(*p)count*p+;for(i=0;i127;i+)if(counti)cout(char)icountiendl;,指针数组,若干个同类型指针变量的集合,其定义形式为:类型*数组名数组长度说明inta3=10,20,30;int*p3;for(inti=0;i3;i+)pi=*pi与ai等价!,指针数组,char*s4=“open”,”new”,”save”,”saveas”;cout*s1ns1;?用字符数组如何存放这四个字符串,指针数组,chars48=“open”,”new”,”save”,”saveas”;用于存储多个字符串时,字符型指针数组相对于二维字符数组大大节省了存储空间!可利用指针数组实现字符串的排序!P152例8.9,指向一维数组的指针变量(行指针),inta34=1,2,3,4,5,6,7,8,9,10,11,12,*p;p=a;是否正确?为什么只有行指针可以用行地址赋值!int(*p)4;/p是指向四个元素空间的行地址p=a;/a的列数必须和p数组的大小一致p=p+1;cout(*p)2;*(*(p+i)+j)、*(pi+j)、*(*(a+i)+j)、*(ai+j)等价!,指向指针的指针变量(多级指针),如果变量p中存放的是指针变量q的地址,那么p就指向了指针变量q,指向指针数据的指针变量,简称为指向指针的指针。例:char*p,*q,c;q=,A,B,指针和函数之指针作参数,指针作为函数的参数时,传递给函数的是某一个变量的地址,这种情况又称为地址传递。voidswap(int*p1,int*p2)inttemp;temp=*p1;*p1=*p2;*p2=temp;,swap(*(t+1)=*s;returnt;voidmain(void)charch=a,*p,*q;p=,指针和函数之指针作返回值,46,练习,(1)如下语句:intc45,(*cp)5;cp=c;则以下哪个是对数组c的元素的正确引用。Acp+1B.*(cp+3)C.*(cp+1)+3D.*(*cp+2)(2)voidmain(void)char*n4=“China”,“Japan”,“England”,“Germany”;char*p=n;inti;for(i=0;i4;i+,p+)cout*(*p+2)ab;p=sum;coutp(a,b)number。,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!