- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
上一页 下一页 返 回 2.数组名作函数参数 (1)一维数组名作实参 【例8.12】 编写程序,调用函数输出数组中的数据。 【程序代码】 #include stdio.h #define M 10 void arrout(int *); main( ) { int s[M]={1,2,3,4,5,6,7,8,9,10}; arrout(s); } void arrout(int *a) { int i; for(i=0;iM;i++) printf(((i+1)%5= =0)? %4d\n: %4d,*(a+i)); /* 根据i的值来确定使用不同的格式串 */ printf(\n); } 运行结果如下: 上一页 下一页 返 回 当数组名作实参时,对应的形参除了应该是指针外,形参还可以用另外两种形式。对于上例中的函数调用arrout(s),对应的函数首部可以写成以下三种形式: ① arrout(int *a) ② arrout(int a[ ]) ③ arrout(int a[M]) 在第②和第③种形式中,虽然说明形式与数组说明相同,但C编译程序都把a处理成第一种指针形式。 (2)二维数组名作实参 当二维数组名作实参时,对应的形参必须是一个行指针变量,例如,主函数中以下的定义和调用语句: #define M 5 #define N 3 main( ) { double s[M][N]; … fun(s); … } 上一页 下一页 返 回 则fun函数的首部可以是以下三种形式之一: ① fun(double (*a)[N]) ② fun(double a[ ][N]) ③ fun(double a[M][N]) 注意:列下标不可缺。无论是哪种方式,系统都把a处理成一个行指针。和一维数组相同,数组名传送给函数的是一个地址值,因此,对应的形参也必定是一个基类型相同的指针变量,在函数中引用的将是主函数中的数组元素,系统只为形参开辟一个存放地址的存储单元,而不可能在调用函数时为形参开辟一系列存放数组的存储单元。 上一页 下一页 返 回 【例8.13】 假定有5个学生,每个学生有3门课的成绩,编程输出某个学生的成绩。 【程序代码】 #include stdio.h search(float (*p)[3], int a) { int i; printf(the scores of student NO. %d are:\n,a); for(i=0;i3;i++) printf(%5.1f,p[a-1][i]); printf(\n); } main( ) { float score[5][3]={{86,90,78},{86,84,96},{9l,76,88},{90,77,66},{78,97,68}}; int n; printf(input student No.(1-5):); scanf(%d,n); search(score,n); } 运行结果如下: 上一页 下一页 返 回 在C语言中,函数可以返回整型值、字符值、实型值等,也可以返回某种基类型的指针值,即地址。返回指针值的函数与以前介绍的函数在概念上是完全一致的,只是对这类函数的调用,其返回值的类型是某种指针类型而已。定义返回指针值的函数,一般形式为: 类型名 *函数名(形参表) {…… } 例如: int *f(int x, int y) {…… } 函数f( )返回指向int型数据的指针,其中x,y是函数f( )的形参,注意在函数名的两侧分别为“*”运算符和“( )”运算符,由于“( )”的优先级高于“*”,因此,函数名先与“( )”结合,在函数名之前的*,表示函数返回值为指针类型。 8.4.2 返回指针值的函数 上一页 下一页 返 回 【例8.14】对例8.13 用返回指针值的函数来实现。 【程序代码】 #include stdio.h main( ) { float score[5][3]={{86,90,78},{86,84,96},{9l,76,88},{90,77,66},{78,97,68}}; float *search( float (*)[3],int); float *p; int i,n; printf(input student No.(1-5):); scanf(%d,n); printf(The scores of student NO. %d are:\n,n); p=search(score,n); for(i=0;i3;i++) printf(
文档评论(0)