- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第13讲 指针和函数 第13讲 指针和函数 本讲主要内容 指针作为函数的参数 简单指针变量作函数参数 指向数组的指针作函数的参数 字符串指针作函数的参数 指针数组作函数的参数 带参数的main()函数 指针函数和指向函数的指针变量 动态内存分配函数简介 第13讲 指针和函数 教学目标 熟练掌握用简单指针变量作函数的参数时函数的定义和调用方法。 明确数组指针作函数参数和字符串指针作函数参数的异同,能正确定义和调用字符串指针作参数的函数。 熟悉指针数组作参数的函数,了解它的主要用途。 了解带参数main()函数的特点,掌握带参数main()函数中各个参数的意义,学会带参数main()函数的设计方法。 了解指针函数的定义方法及其应用。 了解动态内存管理的概念及意义,熟悉动态内存管理函数。 一、指针作为函数的参数 指针可以指向任何类型的数据,因此通过指针能够实现任何类型的数据处理。函数使用指针参数,就可以使函数处理各种类型的数据。与基本数据类型的变量作函数参数的最大区别是,在函数间传递的不是变量的数值,而是变量的地址,这样可以通过函数直接处理实参指针指向的数据。 一、指针作为函数的参数 简单指针变量作函数参数 例12-1用swap()函数交换两个变量的值。 void swap(int *p1,int *p2) { int temp; temp=*p1; *p1=*p2; *p2=temp;} main() { int x,y; scanf(%d,%d,x,y); if(xy)swap(x,y); printf(%d,%d\n,x,y); } 一、指针作为函数的参数 指向数组的指针作函数的参数 例12-2 求一维数组的最大元素值。 我们用三个函数实现这个程序: 用输入函数input()建立数组; 用max_a()函数求最大值; 用main()函数作为主调函数。 为了方便对函数编写,先假定数组长度为n,指针p指向该数组。 一、指针作为函数的参数 void input(int *p,int n) {int i; for(i=0;in;i++) scanf(%d,p+i); return; } int max_a(int *p,int n) { int i,max=*p; for(i=1;in;i++) if(*(p+i)max)max=*(p+i); return(max);} main() { int a[10]; input(a,10); printf(MAX=%d\n,max_a(a,10)); } 一、指针作为函数的参数 例12-3 利用一维数组的排序函数对数组排序。 一、指针作为函数的参数 字符串指针作函数的参数 一、指针作为函数的参数 指针数组作函数的参数 例12-7将一组字符串按字典顺序排序后输出。 一、指针作为函数的参数 使用参数的main()函数 指针数组的一个重要应用是作为main()函数的形参,带参数的main函数的一般形式如下: main (int argc, char *argv[ ]) 其中:argc表示命令行参数个数,argv是指向命令行参数的指针数组。 在操作系统下运行C程序时,可以以命令行参数形式向main()函数传递参数。命令行参数的一般形式是: 运行文件名 参数1 参数2 …… 参数n 运行文件名和参数之间、各个参数之间要用一个空格分隔。 指针argv[0]指向的字符串是运行文件名,argv[1]指向的字符串是命令行参数1,argv[2]指向的字符串是命令行参数2,……,等等。 一、指针作为函数的参数 例12-8 带参数的main()函数举例 #include stdio.h main(int argc,char *argv[]) { int i; printf(argc=%d\n,argc); for(i=1;iargc;i++) printf(%s\n,argv[i]); } 二、指针函数和指向函数的指针变量 指针函数 函数返回值是指针类型的函数称为指针函数。指针函数的定义与其他函数有一定区别,需要在函数名前使用“*”符。一般格式如下: 数据类型 *函数名(形参表) { 函数体 } 二、指针函数和指向函数的指针变量 例12-9将一组字符串中长度最大的找出来,并输出这个字符串。 二、指针函数和指向函数的指针变量 指向函数的指针变量 在定义一个函数之后,编译系统为每个函数确定一个入口地址,当调用该函数的时候,系统会从这个“入口地址”开始执行该函数。存放函数的入口地址的变量就是一个指向函
文档评论(0)