- 1、本文档共33页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章 指针(二)精品
小 结 指针变量作为函数的参数 将变量地址传给函数,得到要改变的值 void swap(int *1, int *p2) 指向数组元素的指针 int *p, a[10]={0,1,2,3,4,5,6,7,8,9}; p=a[0]; /* 或者p=a; */ 通过指针引用数组元素 p+i/a+i 表示a[i] *(p+i)/*(a+i) 表示a[i] 1。求三个数的最小值,子函数设计为求两个数的最小值。 2。《上机指导书》实验八:6,7 3. 教材p278 10.2 子函数:void swap(char *p1,char *p2) 主函数中:char s1[20], s2[20]; if(strcmp(s1,s2)0) swap(s1,s2); 作 业 1。带参数的宏定义形式? #define 宏名(参数表) 字符串 在进行字符串替换的同时,还进行参数的替换。 2。何谓指针?何谓指针变量? 3。指针变量的定义形式是什么?指针运算符有哪两种?分别表示什么操作? 复 习 # define V(l,w,h) (l)*(w)*(h) vol=V(a,b,c); 2。指针:变量的地址称为该变量的指针。 指针变量:专门存放变量地址的变量。 3。指针变量定义形式:基类型 *指针变量名 指针运算符有和*两种: (1) —取变量的地址:给指针变量赋值。 如:int *px,x; px=x; (2) *—指针运算符,表示指针变量所指向的变量。如:px=x, 则*px 表示它所指向的变量x. 第10章 指针 地址和指针的概念 变量的指针和指向变量的指针变量 数组与指针 字符串与指针 10.2 变量的指针和指向变量的指针变量 三、指针变量作为函数参数 指针可以作为参数在函数间传送,并可以实现其它数据类型无法实现的工作。 例1:void swap(int x, int y) { int t; t=x; x=y;y=t; } void main( ) { int a=10,b=20; printf(“交换前a=%d,b=%d\n”,a,b); swap(a,b); printf(“交换后a=%d,b=%d\n”,a,b); } 能否实现交换?为什么? a b a b x y x y 10 20 10 20 10 20 20 10 形参 实参 运行结果: 参数传递是单向的,只将a→x, b→y, 交换后并不能 x→a, y→b. 交换前a=10,b=20 交换后a=10,b=20 交换 10 20 20 10 可用指针作为函数的参数,通交换*px和*py,使a、b的值得到交换。 void swap(int *px, int *py) { int t; t=*px; *px=*py; *py=t; } void main ( ) { int a=10, b=20; int *p1, *p2; p1=a; p2=b; printf(“交换前a=%d,b=%d\n”, a,b); swap(p1,p2); /*不能写为swap(*p1,*p2); */ printf(“交换后a=%d,b=%d\n”, a,b); } p1 a a 10 b 20 p2 b px a a p1 a 10 py b b p2 b 20 px a a p1 a 20 py b b p2 b 10 p1 a a 20 b 10 p2 b *总结: 通过调用子函数改变主调函数中n个变量的值: 1.主调函数:设n个指针,指向n个变量; 2.传递变量的指针(地址); 3.子函数中:改变变量的值; 4.返回后,地址未变,值改变。 注意:在调用函数时,通过交换*px与*py的值达到交换实参指向的变量a、b 的目的。
文档评论(0)