C语言第十六讲(指针与函数).doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
指针与函数 1.掌握指针变量为参数在调用函数和被调用函数之间的数据传递。 2.掌握函数返回地址值的方法。 3.掌握指向函数的指针及其运算。 4.能熟练运用指针变量完成C程序的编写。 1. 指针变量作为参数时实现数据传递 2.指向函数的指针及运算 3.函数返回地址值的方法 (一)导课 在C语言函数调用中,参数传递可以是一般变量的传递,也可以是地址的传递(指针)。 (二)课程要点 一、指针变量作为函数的参数 使用指针类型做函数的参数,实际向函数传递的是变量的地址。 【例1】定义一个函数,用指针变量作参数实现两个数据的交换。 #include stdio.h void main() { void swap(int *pa,int *pb); int a,b; a=15;b=20; printf(before swap a=%d,b=%d\n,a,b); swap(a,b); printf(after swap a=%d,b=%d\n,a,b); } void swap(int *pa,int *pb) { int t; t=*pa; *pa=*pb; *pb=t; } 其数据交换的变化过程如下图所示: 思考:将上面swap函数作以下修改,a,b的值是否发生了交换? void swap(int *pa,int *pb) { int *t; t=pa; pa=pb; pb=t; } 分析:如下图 pa pb pa pb 交换前 交换后 由图所知,交换后只是指针pa、pb的指向发生了变化,而a、b值并没有改变。 【例2】通过定义的函数,将数组a中所有数据按相反顺序存储。 #include stdio.h void re(int *p,int n) { int *q,t; q=p+n-1; while(pq) { t=*p; *p=*q; *q=t; p++; q--; } } void main() { int a[10],j,*r; for(j=0;j10;j++) scanf(%d,a[j]); for(j=0;j10;j++) printf(%d\t,a[j]); printf(\n); re(a,10); for(r=a;ra+10;r++) printf(%d\t,*r); printf(\n); } 二、返回指针值的函数 1、返回指针值的函数的定义形式: 类型名 *函数名(形参表) {函数体} 说明:“类型名”表示返回的指针所指向的数据类型,“*”表示定义的函数是一个返回指针值的函数。 例如:int *min(int x,int y) { int *p; …… return (p); } 【例3】编写函数完成:在字符串中查找一个指定的字符,并将该字符的地址返回到调用函数。如果字符被查找到,请在调用函数中输出该字符及该字符起的字符串。 #include stdio.h char *ch(char *str,char st) { while(*str!=st*str!=\0) str++; if(*str!=\0) return (str); } void main() { char *p,*q,a[100],c; gets(a); p=a; c=getchar(); q=ch(p,c); printf(%c\n,*q); printf(%s\n,q); } 三、指向函数

文档评论(0)

hong333666 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档