| C语言函数参数的传递和值返回 |
|
作者:北极圈 文章来源:本站整理 点击数: 更新时间:2008-6-18 14:05:38 |
|
还可以再简化为:
int a(int);
main() { int num; scanf(%d,&num); printf(%d,a(num)); }
int a(int num) { return num*num; /*直接在这儿返回*/ } 对于函数而言,一个函数只能返回一个值,如果想返回一组数值,就要使用数组或者结构或者指针。其实对于这些,还是返回一个值,只是这个值是一个地址而已。但是对于数组的返回有和变量不同,因为数组和地址是联系在一起的。看一个例子: void a(int []);
main() { int array[5]={1,2,3,4,5},i; a(array); for(i=0;i<5;i++) printf(%d,array[i]); }
void a(int array[]) { int i; for(i=0;i<5;i++) array[i]++; } 看看这个程序,好象函数没有返回值,但是函数的功能的确实现了,在主函数当中输出的值的确都各加了1上来。这就是因为数组和变量不同的缘故,在后面讲指针的时候再详细说明。 下面看一个实际例子,加深对函数的理解:
用函数实现,判断一个整数是不是素数?在主函数里输入输出,子函数里判断。
#include math.h int judge(int);
main() { int num,result; scanf(%d,&num); result=judge(num); if(result==1) printf(yes\n); else printf(no\n); }
judge(int num) { int i,flag=1; for(i=2;i<=sqrt(num);i++) if(num%i==0) { flag=0; break; } return flag; } 可以看出,函数的功能就是为了让程序看起来有条理,一个函数实现一个特定的功能。如果我们还和以前那样,把所有代码都放在main()函数,好象程序就显的臃肿了。而且函数有一个显著的好处就是很方便的使用。这里面的judge()函数判断一个数是不是素数,如果我们以后还有判断某个数是不是素数,就可以直接使用这个函数了。我们这样,把下面的代码:
judge(int num) { int i,flag=1; for(i=2;i<=sqrt(num);i++) if(num%i==0) { flag=0; break; } return flag; } 保存为judge.h文件,放到include目录里面。 以后就可以直接使用这个函数了,就好象直接使用abs(),sqrt()这些函数一样方便。
#include math.h /*必须要有它*/ #include judge.h
main() { int num,result; scanf(%d,&num); result=judge(num); if(result==1) printf(yes\n); else printf(no\n); } 看上面的例子,我们在程序中直接使用了函数judge(),这就是我们自己编写的第一个所谓的库函数。但是程序的第一行要包含math.h文件,这是因为在judge.h里面使用了sqrt()函数,所以为了方便,我们可以把math.h放到judge.h里面,也就是在judge.h文件的第一行加上include math.h,这样,我们的主程序中就不需要包含它了,但是这样做也有副作用,具体有什么副作用,我们以后接触到时再介绍。 我们实际用到的一些程序,也许代码有很长,上千行,甚至上万行,这些代码不可能放在一个*.c文件中,所以我们经常把一些功能做成*.h,*c的文件形式,然后在主程序中包含这些文件,这样就把一个大程序分割成几个小块,不仅浏览方便,对以后的修改也有很多好处。 我们在平时就应该有这样的好习惯,把一些经常使用的功能做成库函数的形式保存下来,也许刚开始你会觉得很烦琐,可到了后来,也许几年过去了,你会发现,一个好几千行上万行的程序,有一大半的功能你都有,直接调用就可,这会大大缩短你的程序开发周期的。就好象这里的判断素数一样,如果以后还需要判断一个数是不是素数,就没必要再写那些代码了,直接调用judge()函数就可。
上一页 [1] [2]
|
| 文章录入:admin 责任编辑:admin |
|
上一个文章: C语言函数的定义和调用 下一个文章: C语言的作用域和存储类型 |
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |