第11章_对函数的进一步讨论.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文档。上传文档
查看更多
11.1 命令行参数 带参数的main()的函数首部形式如下: main(int argc,char *argv[ ]) 说明: (1)第一个形参argc是int类型,保存命令行中字符串的个数。 (2)第二个形参argv是指向字符的指针数组,保存命令行中给出的字符串。 例1 编写一个程序,显示命令行上的所有参数。 #includestdio.h main(int argc,char *argv[ ]) { while(argc1) { ++argv; printf(“%s\n”,*argv); --argc; } } 将上述程序以文件名echo.c存盘,经过编译、连接后,在命令行上输入命令及屏幕显示结果如下: C语言中,函数调用是值传递方式,即函数的实际参数和形式参数之间的数据传递方向是单向的,只能由实际参数传递给形式参数,而不能由形式参数传递给实际参数,是实际参数向形式参数单向赋值的关系。 在内存中,形式参数与实际参数占用不同的内存单元。当调用函数时,给形式参数分配内存单元,将实际参数的值赋值给形式参数,调用后,形式参数单元释放,实际参数仍保留调用前的值,形式参数值的变化不影响实际参数。 参数传递方式 值传递方式 方式:函数调用时,为形参分配单元,并将实参的值复制到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值 特点: 形参与实参占用不同的内存单元 单向传递 如何实现“地址传递”? 只能是:函数调用时,将数据的存储地址作为参数传递给形参,当然此时的形参只能是能存储地址的变量(指针变量)。才能达到“双向”传送的目的。 11.2 指针和函数 11.2.1 指针变量作函数参数 11.2.2 返回指针值的函数 11.2.3 指向函数的指针变量 11.2.1 指针变量作为函数参数 11.2.2 返回指针的函数 (返回值为某指针类型的函数) 函数定义形式: 类型标识符 *函数名(参数表); 例 int *f(int x, int y) { …… } 11.2.3 指向函数的指针 函数在编译时被分配的入口地址(程序段的存储地址) 称为函数指针, 用函数名表示。我们将这一地址存到一个指针变量里去,这个变量就是指向函数的指针变量。 有关说明 1、注意指向函数的指针变量定义的格式 2、在给一个指向函数的指针变量赋值时,不用带参数,如: p=max; 而不能p=max(a,b); 3、只能给指向函数的指针变量赋值同类型的函数。 4、用函数指针变量调用函数时,只需将(*p)代替函数名即可,实参必须写上(若有参数的话)。 5、指向函数的指针变量可以根据需要指向同类型的不同函数; 6、注意指向函数的指针变量的操作。 用函数指针变量作函数参数 例15:用函数指针变量作参数,求最大值、最小值和两数之和 void main() { int a,b,max(int,int), min(int,int),add(int,int); void process(int,int,int (*fun)()); scanf(%d,%d,a,b); process(a,b,max); process(a,b,min); process(a,b,add); } void process(int x,int y,int (*fun)()) { int result; result=(*fun)(x,y); printf(%d\n,result); } max(int x,int y) { printf(“max=”); return(xy?x:y); } min(int x,int y) { printf(“min=”); return(xy?x:y); } add(int x,int y) { printf(“sum=”); return(x+y); } 例16:已知契比雪夫多项式的定义如下: x (n=1) 2x2-1 (n=2) 4x3-3x (n=3) 8x4-8x2+1 (n=4) 编写程序,从键盘输入整数n和实数x,根据n的值调用不同函数,计算多项式的值。 #includestdio.h main() { float fn1(float),fn2(float); float fn3(f

文档评论(0)

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

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

1亿VIP精品文档

相关文档