第十三章 函数(2)

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

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

i<argc;

i++)
            printf(“%sn”,argv[i]);


      system(“PAUSE”);


}
—————————
发现他的输出竟是下面的样子:
第十三章 函数(2)
看来在我们这个程序里面,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 <stdio.h>
#include <stdlib.h>
long power(int n,int m);

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

//声明函数原型
int main()
{
       //实现代码段
}
long power(int n,int m)//定义函数
{
         //功能实现代码
}
int age()
{
       //功能实现代码
}
—————————–
想要声明一个函数,我们就应该在main()前面将他声明,事实上这就是给出了一个接口给我们程序调用,这个函数的具体实现还在下面的定义。我们在上面的程序里声明了两个函数,一个带参数一个不带参数,所以第一个参数的接口是两个参数和返回值,第二没参数的函数的接口就是他的返回值。

发表评论