您现在的位置: 北极圈下载站 >> 编程学习 >> C及C++ >> 正文
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 
  • 上一个文章:

  • 下一个文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    站内文章搜索

    推 荐 文 章

    热 门 文 章

    推 荐 软 件