C语言学习第七课(函数)

第七课

1,函数定义语法

返回类型 函数名(参数列表)
{
    函数体;
    return 与返回类型相同类型的值//若为void类型,则无
}
    

2,形参和实参

1,形参:函数'定义'()内的变量,类似定义变量的语句;如:int a(int s,int d);//s和d就是形参
2,实参:函数'调用'()内的传入的参数;

3,变量的作用域和生命周期

1,作用域:变量的作用范围(在何处能够访问到变量)【采用就近原则】
2,全局变量:定义在所有函数之外的变量,定义之后,都可以访问,且数据共享(内存只占一块)
   //生命周期:从定义开始到程序结束
3,局部变量:在函数或者代码块里面定义的变量
   //生命周期:从定义开始到函数或代码块结束

4,内存存储类别【注意:静态变量和全局变量自动初始化为0】

存储类别自动型静态型寄存型外部型
关键字aotostaticregisterextern

5,内部函数和外部函数

1,函数的存储类型为static型,称为内部函数(静态函数)【该函数只能在其所在的文件中使用】
形式:static 返回类型 函数名(形参)
2,函数的存储类型为extern型,称为外部函数【该函数能被其他源文件调用】
【若使用外部变量,也需在使用前加extern】

6,内存四区

栈区(stack)存放函数的参数,局部变量等,由编译器自动释放
堆区(heap)动态申请的内存放在堆区,若不释放,程序结束后,操作系统会回收
全局区(static)又称静态区全局变量和静态变量的存储是放在一块的,里面细分有一个常量区,字符串常量和其他常量也存放在此,编译器不会自动释放,该区域在程序结束后由操作系统释放
代码区存放函数体的二进制代码

7,递归函数

1,递归:函数自己调用自己//注意:递归需要退出条件,否则会发生栈溢出
  //例子【斐波拉契数列求第n项的值】:1 1 2 3 5 8 13 ...公式:f(n)=f(n-1)+f(n-2);
    #include<stdio.h>
    int fobonacci(int n)
{
    //确定出口
    if(n==1||n==2)
    {
        return 1;
    }
    else
    {
        return fobonacci(n-1)+fobonacci(n-2);
    }
}
    int main()
{
    int n;
    scanf("%d",&n);
    printf("%d ",fobonacci(n));
    return 0;
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值