C语言--函数(方法)

来源:互联网 发布:知乎 俄罗斯电影 编辑:程序博客网 时间:2024/06/03 14:55

不墨迹,直接上代码:

int main(int argc,const char * argv[]) {

    

    printf("Hello World!!");

    return 0;

}

上面的一段代码就是一个函数,而且是C语言中最重要的main函数。所谓函数,在我的理解就是将一组语句放在一起的一次封装。我们在开发中常常会写很多的函数,而我们写的函数的目的就是为了将一个功能的语句放在一起,方便代码的管理和阅读。

函数声明 :int main(int argc, const char * argv[]);

函数的声明是告诉编译器函数名称,函数返回值类型,函数的参数。从上面的代码中我们可以看到,函数名称是main,返回值类型是int也就是一个整型,函数的参数为()内的东西。

函数在编写时除了上面函数声明时的3部分外,还要有函数的主体,也是函数要处理问题的代码语句。在上面的代码中printf("Hello World!!");就是这个函数的主体,表示打印 Hello World!! 

下面我们来写一个函数,用这个函数来解析函数从声明到定义的所有内容。

声明一个两个数相加求和的函数,函数名为addTwoNum,并可以接受两个参数a和b,函数执行完毕后将求和结果返回。代码如下:

int addTwoNum(int a,int b){

    int num = a + b;

    return num;

}

这里第一个int表示这个函数的返回值是一个int类型的数字,()内的int表示函数参数的类型是int类型的数字,{}内的int是声明了一个int类型的变量num。关键字return表示这个函数的返回值就是return后面跟着的num。

现在看来,函数真的很简单。就是将一个功能的代码放在一起,然后考虑要不要参数,要不要返回值。那么,下面我们再来看看这个函数怎么调用起来,用它来计算。

int main(int argc,const char * argv[]) {

    int c = 0;

    c = addTwoNum(2, 3);

    printf("%d\n", c);

    return 0;

}

上面这段main函数中的代码就是对addTwoNum这个函数的调用,首先定义一个int类型的变量c,然后将函数addTwoNum的返回值赋值给c最后打印出c。

前面我们说到了函数的参数,c = addTwoNum(2, 3);这里的2和3就是函数addTwoNum的参数,而且对应关系是2->a 3->b。

说到这里,我们可以看到,很多地方出现了参数这个词。那么我们就来好好说一说参数这个东西。

int addTwoNum(int a, int b){}这里的a和b我们叫做参数,addTwoNum(2, 3)这里的2和3我们也叫做参数。这里面有什么区别的地方么?当然有,

在上面说到的参数中,a和b我们称之为形式参数,2和3我们称之为实际参数。所谓形式参数,表示这个变量就是一个形式,没有具体的值,取值要取决于调用的时候所赋予的实际参数,调用时给函数传递的是多少,那么形式参数在函数中使用时的值就是多少。再说实际参数,这个是在函数调用时给函数的形参赋予的实际值,类型与形参类型相同。

用一句话概括,形参决定类型,实参决定大小。

说完了上面的参数,那么有没有没有参数的函数啊?当然,肯定是可以的,上一篇文章说到数据类型中的void类型的时候就有提到过函数的参数为空。那么下面我们就来写一个没有参数的函数:

int max(){

    int a = 40;

    int b = 10;

    if (a > b) {

        return a;

    }else{

        return b;

    }

}

从上面的函数可以看出,函数max的()中的内容为空,很显然,形式参数为空,那么就是没有参数了。也可以在()中添加一个void。表示参数为空。

对于无参数的函数的调用,那就更简单了,因为没有参数,所以我们在调用的时候就不用再给函数传递实参了。直接int d = max();这样就可以了。

对于上面说到的函数调用,都是很简单的传值调用。还有一种调用方式是引用调用,是通过指针传递的方式,形参为指向实参的指针。有兴趣的可以去自行百度。


说完了参数,那么我们再来说一说返回值,我们上面写的函数都是有返回值的函数,在上一篇文章说到void类型的时候就说过函数的返回值为void的情况,也就是返回值为空。

void min(int a,int b){

    if (a>b) {

        printf("%d\n", a);

    }else{

        printf("%d\n", b);

    }

}

这就是一个简单的没有返回值的函数,很容易理解,因为没有return这个关键字了。同理,没有的返回值,那么在调用的时候也就不用定义变量去接收了。直接调用即可:    

    Hello();

这里需要注意一点。C语言的编译器是顺序执行的,对于函数,若是没有函数声明,必须是写在main前面,提前编译,不然运行的时候,会因为找不到对应的函数而报错。



0 0
原创粉丝点击