对函数进一步讨论.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
传给main函数的参数 通过实参向函数传递函数名或指向函数的指针变量 1 .指向函数指针变量的定义 2 .函数名或指向函数的指针变量作为实参 函数的递归调用 在支持C的环境中,可以在运行C程序时,通过运行C程序的命令行把参数传送给C程序? main函数通常可用两个参数,例如: main ( int argc, char **argv ) { … } 其中argc和argv是两个参数名,可由用户自己命名,类型是固定的? argc必须是整型; argv是一个指向字符型的指针数组的指针,这个字符型指针数组的每个指针都指向一个字符串?因此argv还可直接定义成基类型为字符型的指针数组: char *argv[] 当对包含以上主函数的?名为myc的文件进行编译连接,生成名为myc .exe的可执行文件后,即可在操作系统提示符下输入以下命令执行该程序: myc 这就称为命令行, myc即为执行程序的命令?这时argc中的值为1, argv[0]中将存放字符串myc的首地址,即指向字符串myc?若输入: myc OK! GOODCR OK和good称为命令行参数?这时, argc中的值为3,即命令行中字符串的个数, argv的结构如图所示? argv[0]? argv[1]? argv[2]分别指向字符串"myc"?"OK!"?"GOOD"? #include stdio.h main ( int argc, char *argv [ ] ) { int i; printf ("argc =%d\n", argc ); for ( i =1; i argc; i++) printf ("% s", argv [ i] ); printf ("\n"); } 例11 .1 若以下程序放在myc.c文件中,在编译连接后,生成一个myc.exe文件,输出argc和argv中的数据? 若在命令行中输入: myc A COMMAND LINE CR 程序将输出: argc =4 A COMMAND LINE 结果 #include stdio.h double fun ( int a, int *p ) { … } main ( ) { double (* fp)( int, int *), y; int n; fp =fun ; … y =(* fp)( 56, n ); /*此处通过指向函数的指针调用fun函数*/  } 1 .指向函数指针变量的定义 函数名代表该函数的入口地址,因此可以定义一种指向函数的指针来存放这种地址? 其中,说明符(*fp)( int , int *)说明fp是一个指向函数的指针变量,这个函数必须是double类型?说明符中后面一对圆括号中是类型名,用以说明所指函数的参数个数和参数的类型,这些类型名应与所指函数参数的类型一一对应?如果所指函数没有形参,这一对圆括号也不可省略? fp =fun把fun函数的地址赋予指针变量fp,此处fp的类型必须与fun的类型相同? 语句y =(* fp)( 56, n );实现对函数的调用,它相当于y =fun( 56, n ); 例如 #include stdio.h #include math.h double tran ( double (*)( double), double (*)( double), double ); main () { double y, v; v =60*3.1416 /180.0; y =tran ( sin, cos, v ); printf ( "tan( 60 ) =%10.6 f\n", y ); y =tran ( cos, sin, v ); printf ( "cot( 60 ) =%10.6 f\n", y ); } double tran ( double (* f1)( double), double (* f2)( double), double x ) { return (* f1)( x) /(* f2)( x); } 2 .函数名或指向函数的指针变量作为实参 函数名或指向函数的指针变量可以作为实参传送给函数?这时,对应的形参应当是类型相同的指针变量? 例11 .2 通过给trans函数传送不同的函数名,求tan x和cot x值? 函数可以直接或间接地自己调用自己?前者称简单递归,后者称间接递归,本节只讨论简单递归? 一个问题要采用递归方法来解决时,必须符合以下三个条件: #include stdio.h int fac ( int n ) { int t; if ( n ==1 ||n ==0

文档评论(0)

书房 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档