分享

第十三章 函数(2)

 昵称29398856 2016-01-21

        昨天说到参数和返回值,但是只是开了个头,今天我们来继续看看函数的参数,还是从main()开始吧,这个函数我们从开始到现在都没有发现他有带参数,但是我们有些时候可能会碰到像下面这种类型:

int/void main(int argc,char * argv[])

      大家可能会觉得奇怪,这个真是我们接触的mian函数吗?一开始我也和大家一样,当然如果有人接触过UNIX或者Linux系统的话而且也曾在上面用过C/C++编程过的话,那对这个函数就不陌生。在windows系统上一般没人使用这个带参数的原型,所以我这个只使用windows的人第一次碰到这个原型后顿时大惑不解,于是去Google了下,这才知道这是UNIX余留下来的习惯,尽管如此,我们试着看下这两个参数到底实现些什么,我们编写像下面这样的程序:

----------------------------

#include

#include

int mian(int argc,char *argv[])

{

      for(int i=0;i<>

            printf('%s\n',argv[i]);

      system('PAUSE');

}

---------------------------

     发现他的输出竟是下面的样子:

      看来在我们这个程序里面,argc的值只是1,argv[0]直向的字符串是我们该程序的路径,这是为什么呢?大家可以自己Google一下吧,毕竟现在我们是在windows下的可视化界面下编程,所以这些参数根本用不上,我也不懂,哈哈……

       我们现在继续来看下面这个函数:

----------------------------

long power(int n,int m)

{

       long s = 1;

       while(m--)

              s *= n;

        return s;

}

--------------------------------

       这个函数带有两个参数,n和m,返回一个long类型的值,其中这两个参数和返回值都是这个函数的接口,如果我们要调用这个函数,就必须给他传递两个参数进去,而且接收他返回的值。

       不过这个函数有很大的局限性,他只能接受两个int类型的数作为参数,等以后我们学到C++的时候那时候我们用函数模板来重新定义这个函数,那时就完美了。

       又扯远了,还是回到我们的函数上来,函数是实现特定功能的代码,就好比我们上面的函数是实现一个幂次方的,还记得我是怎么声明这个函数的吗?

----------------------------

#include

#include

long power(int n,int m);//声明函数原型

int age();//声明函数原型

int main()

{

       //实现代码段

}

long power(int n,int m)//定义函数

{

         //功能实现代码

}

int age()

{

       //功能实现代码

}

-----------------------------

       想要声明一个函数,我们就应该在main()前面将他声明,事实上这就是给出了一个接口给我们程序调用,这个函数的具体实现还在下面的定义。我们在上面的程序里声明了两个函数,一个带参数一个不带参数,所以第一个参数的接口是两个参数和返回值,第二没参数的函数的接口就是他的返回值。

       哎,我觉得我真不适合说这些文绉绉的东西,若对“函数”想要了解得更多的话,大家可以去Goole搜索一下,我们还是直接回到一些大家比较想要了解的知识点上来吧,既然这里说到函数,我也不知道该给大家怎么说,所以我们接下来就说说递归函数吧。

        不过,关于递归函数,留待下周吧,大家周末愉快吧。

 

========================

回复D&d直接查看目录

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多