电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > PPT文档下载
分享到微信 分享到微博 分享到QQ空间

c语言ppt10

  • 资源ID:57661734       资源大小:320KB        全文页数:90页
  • 资源格式: PPT        下载积分:10金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要10金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

c语言ppt10

第10章 指针指针-C语言的精华,10 . 1 地址和指针的概念指针就是地址。有变量的、数组的、函数的、字符串的指针等。一、内存的访问方式1、直接访问如:i=2, j=6, k=9 , 通过变量i、j、k 来访问存储单元。2、间接访问如变量 i,不知道其值及地址,而只知道它的地址放在3010、3011中,因此可通过存放地址的单元找到变量 i 的值,此为间接访问。对间接访问,可定义一变量存放地址,如定义ipointer, 赋值 ipointer=&i,2000200220043010,ijki_p,3692000:,内存用户数据区,: :,二、指针的概念一个变量的地址称为该变量的“指针”。i的地址是2000,则地址2000是变量I的指针。存放地址的变量叫“指针变量”,指针变量存放地址。ipointer存放的是变量I的地址。i 变量ipointer 指针变量 ipointer=&i,10 . 2 变量的指针和指向变量的指针变量一、指针变量的定义 一般形式: 类型标识符 *变量名 如:int *p1; char *p2;float *p3; 说明: (1) * 表示指针型变量,意为“指向的指针”(2) 指针变量有确定的指向的数据类型。思考:指针变量存放的是一个地址,为什么定义时需要指定类型?,二、指针变量的引用 1、给指针变量赋值 (赋变量的地址)如: p1=*p与i等价,i=3, 则*p1也为3。注意:p1是地址变量, 而*p 1是非地址变量,与i等价。 “*”:为指针运算符或叫指向运算符、间接运算符,为单目运算符。,2、用指针变量对变量赋值如: int I , j , *p;p=,定义后,p=&I后,*p=3后,I j p,例10.1main() int a,b;int *pointer1, *pointer2;a100;b=10;pointer1&a; /*把变量a的地址赋给pointer_1*pointer2=&b; *把变量b的地址赋给pointer_2*printf (”d,dn”, a,b);printf(”d,dn”, *pointer1,pointer2);,关于运算符&*p1=? 相当于 &(*p1) 等于 &(*p1)=&(a)=&a=p1 *&a 相当于 *(&a)=a(2)优先级 处于第二位,(2) 自增自减运算 如: int a,b,*p;p= 当p为1000,则p+为1004+与*同一级别,均为从右至左,例102输入整数a和b,按大小的顺序输出。main ( )int *p1,*p2,*p, a, b;scanf(“d,d“,printf (“na=d,b=dn”,a,b);printf(“max=d,min=dn“,*pl,*p2);,交换地址(指针变量),使p1指向大数b,而变量a、b未变。,&a,&b,9,&b,&a,p1 a p1 a,p2 b p2 b,5,5,9,p,p,三、指针变量作为函数参数说明:将一个变量的地址传送到另一函数中,实参和 形参均用指针。 例103 对整数按大小顺序输出。用函数处理,且用指针作函数参数。 swap(int *p1 ,int *p2)int p;p=*p1; *p1=*p2; *p2=p; main() int a,b;int *p1, *p2; scanf(“d,d”, if(ab) swap (p1 ,p2); printf (“nd,dn“a,b); ,传递的是变量的指针,在函数中交换的是变量中的内容,主函数中读取交换了的内容。这里指针未变,与上题相反。,以下代码可以实现变量a与b的交换吗?swap(int *pl,int *p2)int *p;ppl;p1=p2;p2p; main() int a,b;int *p1,*p2;scanf (”dd”,&a,b);p1=&a;p2=b;if(ab) swap(p1 ,p2);printf(”nd,dn”,* p1,*p2); ,出错的原因是参数不是双向传递。,例104 输入a、b、c三个整数,按大小顺序输出。swap(int *pt1 ,int *pt2)int p;p=*p1;*ptl=*pt2;*pt2=p; exchange(int *q1,int *q2,int *q3)if(*ql*q2) swap (q1,q2);if(*ql*q3)swap(q1,q3);if(*q2< *q3) swap (q2,q3);,main()int a,b,c,*p2,*p3;scanf(”d,dd“, 运行情况如下:输入:3,2,4 输出:4,3,2,10. 3 数组与指针,内容:指向数组元素的指针变量及其应用指向一维数组的指针变量及其应用数组的指针是数组的起始地址,数组元素的指针是元素的地址。引用数组可以用下标法,也可以用指针法,通过指向数组的元素的指针找到数组元素。使用指针法能使目标程序占内存少,运行速度快。,一、指向数组元素的指针1、定义, 同变量的指针定义相同类型标示符 * 变量名 如: int a10; int *p; float b10; float *p1; -类型相同2、赋值,将某元素或数组的首地址赋给指针变量。 如: int a10, *p;p=(此与语句 *p=&a0 、p=a 不同) 注意:对p赋的是地址,而不是数值。,二、通过指针引用数组元素元素赋值、取值如: int a10,*p; p=a; *p=1; 相当于 a0=1; 1、各元素地址(用以上定义)指针 p 增一便指向下一单元。 所以 p 指向 a0 p+1 指向 a1 p+2 指向 a2: p+i 指向 ai: p+9 指向 a9,因 p=a,因此 p=a, p+i 与 a+i 等价。所以有a 指向 a0 a+1 指向 a1 a+2 指向 a2: a+i 指向 ai a+9 指向 a92、引用元素 直接引用 a0=1; ai =6; 通过地址应用 如:*p=1; *(p+i)=6; 或者 *a=1; *(a+i)=6;“ ” 实际是变址运算符。如ai 在这里变的值为 i*2,“2”是整型数据占两个字节。,3、指向数组的指针变量也可带下标如: p i 与 *(p+i) 等价。若 p=a; 则 p i 与 ai 等价。 例10. 5 输出一数组的全部元素。 main() int a10=1,2,3,4,5,6,7,8,9,0;int *p, i;for(i=0;i<10;i+)printf(“%d “,ai); printf(“n“);for(i=0;i<10;i+)printf(“%d “,*(a+i); printf(“n“);for(p=a;p<(a+10);p+)printf(“%d “,*p); printf(“n“); ,几个注意的问题: (1)p可变,而a不可变。即有p+,而无a+。 (2)当p 变时注意p当前的值。 例 10.6 输出数组a的全部元素。 main() int *p,i,a10;p=a;printf(“Enter 10 numbers:n“);for(i=0;i<10;i+)scanf(“%d“,p+);printf(“n“); p=a;for(i=0;i<10;i+,p+)printf(“ %d “,*p);,(3)关于指针变量的一些运算(设p=a)1)p+ , p-;2)*p+ 等价于 *(p+),先得到*p的值,再做p+*p- 等价于 *(p-) , 先得到*p的值,再做p-;3)*(p+) p先自增1,再得到*p的值*(p-) p先自减1,再得到*p的值;4)(*p)+ 使元素值加1,(*p)- 使元素值减1。,三、数组名作函数参数1、数组名作函数参数2、指针变量作函数参数 例10.7 将数组a中n个数反序排列 void inv(int x,int n) int t,i,j,m=(n-1)/2;for(i=0; i<m; i+)j=n-1-i;t=xi; xi=xj;xj=t;return; ,main() static int i, a10=0,1,2,3,4,5,6,7,8,9;printf(“the orginal array:n“);for(i=0;i<10;i+)printf(“%d “,ai);printf(“n“);inv(a,10);printf(“the array has been inverted:n“);for(i=0;i<10;i+)printf(“%d “,ai);printf(“n“); 运行结果:9 8 7 6 5 4 3 2 1 0,指针变量作函数参数(形参) void inv(int *x,n)int *p,t,*i,*j;int m=(n-1)/2;j=x+n-1;p=x+m;for(i=x; i<p; i+,j-) t=*i; *i=*j; *j=t;return;,提示:数组的指针和指向数组的指针变量int a10, *p;p=a; 第i个元素的地址:p+i 或 a+i 、&ai 第i个元素: *(p+i) 或 *(a+i)、ai,例 10.8 p240 例 10.9 p241 例 10.10 p245,四、指向多维数组的指针和指针变量 (一)多维数组的地址根据数组的性质,二维数组看作是一维数组,如 static int a34=1,3,5,7,9,11,13,15,17,19,21,23; 存放情况如下图所示。看成一维数组时,元素为a0、a1、a2, 每个元素又是一维数组。1、数组的首地址 为 a2、各行的首地址 (1)用a表示 a+i为第i行首地址第0行首地址为 a ,第1行首地址为a+1,第2行为 a+2。 因为看成一维 数组,所以a+1指向了a1,即第一行。,(2)用ai 表示因为 第0行的地址为 a0,第1行的地址为a1 ,第2行的地址为a2。(因为 a0、a1、a2为数组名)ai 为第 i 行、第0列元素的地址。各行首地址的变化情况: 设数组首地址为2000,则各行首地址为: 2000、2008、2016, 各行相差 4*2=8。,

注意事项

本文(c语言ppt10)为本站会员(luoxia****01812)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.