- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
本章主要对三个函数进行了讨论:1、对main( )函数的进一步讨论;2、函数指针;3、函数的递归调用; 11.1 传给main函数的参数 在些之前: 我们一直强调main函数的()中是空的,不能有参数; 但是今天我们要加以注意: main函数也是可以带参数; 三个记忆: 1、 main函数可以带参数; 2、 main函数只能有两个参数; 3、 main函数的两个参数格式是固定的; main函数的参数格式如下: main( int argc, char **argv ) main( int argc, char *argv[ ] ) main( int a, char *g[ ] ) 参数要求: 第一个参数必须是整型; 第二个参数是一个指向字符型的指针数组的指针; 两个参数功能: 第一个参数是用来统计从命令行中输入字符串的个数,它是值最少是1; 第二个参数是用来指向每一个字符串的; 一般函数的形参是由实参给它传值,而main函数的两个参数由谁给值? 其实,在支持C的环境中,可以在运行C程序时,通过运行C程 序的命令行把参数传送给C程序。 P-157 什么是命令行? dir time 例: main( int argc, char *argv[]) { …… } 该程序保存为myc.c的文件,经编译连接后,生成一个myc.exe的文件 若在命令行中输入: myc 那么两个参数将后到什么样的值: 第一个参数argc 的值是1; 第二个参数指向了第一个字符串 argv[0] - “myc” 例11.1 若以下程序放在myc.c文件中,在编译连接中,生成 一个myc.exe 文件,输出argc和argv中的数据。 main( int argc, char *argv[ ]) { int i; printf(“argc=%d\n”,argc); for(i=1; iargc; i++) printf(“%s”,argv[i]); } 若在命令行中输入:myc A COMMAND LINE argc=4; 最后结果为: argc=4 A COMMAND LINE 11.2 通过实参向函数传递函数名或指向函数的指针变量 (函数指针) 在C语言中函数名代表该函数的入口地址,因此 可以定义一种指向函数的指针来存放这种地址。 函数指针的定义格式: 类型名 (*标识符) (形参类型名1,形参类型名2, ….) 例: int (*k) (int ,float ,double) 函数指针的定义格式和功能: 编程求三个整数的平均值: main( ) { int x,y,z; float ave; scanf(“%d%d%d”,x,y,z); ave=fave(x,y,z); printf(“%f”,ave); } float fave(int a,int b,int c) { flaot ave; ave=(a+b+c)/3.0; return ave; } 函数指针的定义格式和功能: flaot fave( int ,int ,int ); main( ) { int x,y,z; float ave; float (*p) (int ,int ,int) ; p=fave; scanf(“%d%d%d”,x,y,z); ave=(*p) (x,y,z); printf(“%f”,ave); } float fave(int a,int b,int c) { flaot ave; ave=(a+b+c)/3.0; return ave; } 2.函数名或指向函数的指针变量作为实参 11.2 通过给trans函数传送不同的函数名,求tan x和cot x; #include stdio.h #include math.h double tran(double (*)(double),double (*)(double),double); main( ) { double v=60*3.1415/180.0; y=tran(sin,cos,v);printf(tan(60)=%10.6f\n,y); y=tran(cos,sin,v);printf(cot(60)=%10.6f\n,y); } double tran (double (*fl)(double),double (*f2)(dou
您可能关注的文档
- 第3章 叠加方法和网络函数2.ppt
- 第3节(一元线性回归模型).ppt
- 第4篇 亲核取代.ppt
- 第3节牛顿力学.ppt
- 第3章-气体和蒸汽的性质-理想气体部分.ppt
- 第4篇非线性电阻电路分析.ppt
- 第3篇 二元关系.ppt
- 第04篇糖代谢.ppt
- 第4节 压电式力学量传感器.ppt
- 第3篇 拍摄清晰度.ppt
- 福莱特玻璃集团股份有限公司海外监管公告 - 福莱特玻璃集团股份有限公司2024年度环境、社会及管治报告.pdf
- 广哈通信:2024年度环境、社会及治理(ESG)报告.pdf
- 招商证券股份有限公司招商证券2024年度环境、社会及管治报告.pdf
- 宏信建设发展有限公司2024 可持续发展暨环境、社会及管治(ESG)报告.pdf
- 品创控股有限公司环境、社会及管治报告 2024.pdf
- 中信建投证券股份有限公司2024可持续发展暨环境、社会及管治报告.pdf
- 洛阳栾川钼业集团股份有限公司环境、社会及管治报告.pdf
- 361度国际有限公司二零二四年环境、社会及管治报告.pdf
- 中国神华能源股份有限公司2024年度环境、社会及管治报告.pdf
- 广西能源:2024年环境、社会及治理(ESG)报告.pdf
文档评论(0)