码迷,mamicode.com
首页 > 编程语言 > 详细

C语言_函数

时间:2016-03-04 21:02:29      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

函数

1、函数构成

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

    // insert code here...

    

    return 0;

}

返回值类型  函数名(函数参数)

{

函数体语句;

 

return 返回值;

}

 

2、函数分类

1)标准函数

由官方或第三方库提供的函数,可以直接调用,无需实现;

 

2)自定义函数

由程序员自己实现的函数;

 

3、编写函数的步骤

1)声明函数

写在头文件

2)实现函数

写在原文件

3)调用函数

C阶段,一般在主函数调用

 

【注意事项】

【1】C语言文件由头文件(.h)和原文件(.c)组成

【2】C语言所有函数的入口函数是主函数,主函数只能有一个

 

无参无返回值函数:

void 函数名();

 

编写一个函数,实现打印hello world;

编写一个函数,实现打印一首李白的诗;

 

无参有返回值函数

返回值类型  函数名();

 

编写一个函数,实现1+2+。。+100的和,将结果返回给主函数;

 

 

有参有返回值函数

返回值类型  函数名(函数参数);

 

编写函数,要求通过参数传递将两个数从主函数传到子函数,求两个数的最大公约数,用返回值返回结果。

 

4、变量的作用域和生命周期

作用域:变量在程序中的使用范围

生命周期:变量在时间上的有效范围

 

5、局部变量和全局变量

1)局部变量(在函数内部定义的变量):

作用域:从定义开始,到函数结束

生命周期:从定义开始生效,到函数调用结束失效

 

2)  全局变量(定义在所有函数之外的变量)

作用域:从定义开始,到文件结束

声明周期:从定义开始生效,到程序结束失效

 

3)静态变量

作用域:和局部变量一样

生命周期:和全局变量一样

 

内存分段:

数据段:全局变量和静态变量存储在数据段

只读数据段:字符串存储在只读数据段

堆区:程序猿手动申请的内存

栈区:局部变量

 

 

5、递归

用递归实现求1+2+3+。。。+100的和。

 

调用自身的函数称为递归函数。

调用自身的行为称为递归。

 

 

递归的步骤

1)找到递归的规律

2)找到能使递归结束的条件

3)执行递归

 

n = 5;

int sum(int n);

 

sum(5) = sum(4) + 5;

sum(4) = sum(3) + 4;

sum(3) = sum(2) + 3;

sum(2) = sum(1) + 2;

sum(1) = 1;

 

 

 

简单的递归DEMO

 

#include <stdio.h>

 

 

int sum(int n);

void hello(int n);

 

 

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

    // insert code here...

    //printf("%d\n",sum(5));

    hello(10);

    

    return 0;

}

 

int sum(int n)

{

//    int ret = 0;

//    for (int i = 1; i <= n; i++) {

//        ret += i;

//    }

//    

//    return ret;

    if (n == 1)

    {

        return 1;

    }

    

    return sum(n-1) + n;

    

}

 

 

void hello(int n)

{

    if (n == 0) {

        return;

    }

    

    printf("hello world\n");

    hello(n-1);

}

 

C语言_函数

标签:

原文地址:http://www.cnblogs.com/yuhanchen/p/5243303.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!