C++第06章 指针与引用.ppt

C++第06章 指针与引用.ppt

ID:48732996

大小:263.50 KB

页数:27页

时间:2020-01-20

C++第06章 指针与引用.ppt_第1页
C++第06章 指针与引用.ppt_第2页
C++第06章 指针与引用.ppt_第3页
C++第06章 指针与引用.ppt_第4页
C++第06章 指针与引用.ppt_第5页
资源描述:

《C++第06章 指针与引用.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第6章指针与引用1回顾指针2指针──地址指针(Pointer)指针变量━━存放变量地址(即指针)的变量变量内存地址大小(字节数)变量值i200023整型j200226k200429指针p301022000i=3;j=6;k=9;正确!p=2000;错!应p=&i;则p的内容为变量i的地址2000§地址和指针的概念3直接访问i间接访问*p变量i指针变量p变量i32000→3地址2000(地址3010)地址2000(→表示指向关系,称p指向i)p=p+1;若p的原值为2000,则赋值后p的内容为2002p+i的地址运算为p+c*i对于整型c=2实型c=4字符型c=14运算符&取地址运算符

2、&i即i的地址*指针运算符*p1即指针变量p1所指向的变量(即i)(或称“间接访问”运算符)"&"和"*"两个运算符的优先级相同,但自右而左结合,若已执行p1=&a;&*p1即是&a先算*p1,得a,再算&ap2=&*p1;是将a的地址送给p2*&a即是变量a,与*p1同(*p1)++即a++*p1++,按*(p1++)运算,则p1不再指向a(“++”,“*”的结合方向是自右而左)*++p1,即*(++p1)56§数组的指针和指向数组的指针变量数组的指针:数组的起始地址数组元素的指针:数组元素的地址指向数组元素的指针变量inta[10];int*p;p=&a[0];等同int*p=&

3、a[0]p=a;int*p=a;p+i与a+i就是a[i]的地址,实际地址是a+c*i,c为元素的长度(字节)*(p+i)与*(a+i)即a[i]*(p+5)与*(a+5)即a[5]指向数组的指针变量也可有下标p[i]与*(p+i)等价,代表a[i]数组ap,a地址(8进制)──→┏━━━┓2000p+1,a+1┃┃a[0]──→┣━━━┫2002┃┃a[1]┣━━━┫2004┃┃a[2]┣━━━┫2006p+i,a+i┃┃a[3]──→┣━━━┫2010┃┃a[4]┣━━━┫2012┃┃a[5]┣━━━┫2014┃┃a[6]┣━━━┫2016┃┃a[7]┣━━━┫2020p+9,a

4、+9┃┃a[8]──→┣━━━┫2022┃┃a[9]┗━━━┛指针变量的运算应注意以下几点:p++或p+=1p指向下一元素*p++即*(p++),优先级同,自右而左结合先得到*p(变量)的值,再使p加1*(++p)是先使p加1,再取*p(*p)++表示p指向的元素加1,即a[0]++*(p--)相当于a[i--]*(--p)相当于a[--i]算符++和--用于指针变量很有效,可使指针向前或向后移动7指向由m个元素组成的一维数组的指针变量main()/*例10.13用指针变量输出第i行第j列的元素*/{inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,1

5、2}};int(*p)[4],i,j;p=a;scanf("%d,%d",&i,&j);printf("a[%d][%d]=%d",i,j,*(*(p+i)+j));}输入1,2p1234输出a[1][2]=7p+15678p+29101112int(*p)[4]表示p是指针变量,指向含4个元素的一维整型数组a[2][3]的地址是*(p+2)+3(*p)的两侧括号不能少.[]的优先级高于**(*(a+i)+j)*(a[0]+(i*4+j))8§字符串的指针和指向字符串的指针变量字符串的两种表示方法①字符数组②字符指针main()main(){charstr[]="Computer

6、";{char*str="Computer";printf("%s",str);printf("%s",str);}}输出:Computer输出:Computer字符数组的第3个元素字符串第3个元素str[3]是p*(str+3)是p可将字符串看作一个整体,进行整体的输入与输出而对一数值型数组,不可用数组名输出全部元素9§函数的指针和指向函数的指针变量指针变量可指向━━变量,数组,字符串,函数,指针函数的指针━━函数的入口地址例10.23用函数名调用用函数指针调用main()main(){intmax(int,int);{intmax(int,int);inta=2,b=3,

7、c;inta=2,b=3,c;c=max(a,b);int(*p)();printf(“a=%d,b=%d,c=%d”,p=max;a,b,c);}c=(*p)(a,b);printf("a=%d,b=%d,c=%d",max(intx,inty)a,b,c);}{return(x>y?x:y);}不能p=max(a,b)用(*p)替换函数名10int(*p)();说明p是一个指向函数的指针变量,函数带回整型的返回值(*p)两边的括号不能丢,这表示

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

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

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