C创建函数及变量的储存方式和生存周期

程序:求一个数的阶乘
什么是函数,为什么要用函数
个人理解:函数就是一个小的程序,我们可以用许多小的程序组成大程序,但是写一个main主函数里面肯定会造成程序冗长,阅读困难,不精炼等问题。把小程序分块话就会很好阅读,这就是所说的函数模块化设计。

变量的储存方式和生存周期
储存类型有四种:
自动的auto,调用函数时,系统自动给变量分配储存空间,函数调用结束就会自动释放储存空间
静态的statis, 变量的值在函数调用后不会消失,而且会保留原值,占有的储存单元也不会释放。以便下次调用
寄存器register,使变量的值放在cpu中的寄存器里,在固定多次调用的值(比如10000次)则可以用register,可以提高执行效率
外部的extern,即当前文件内可用,其他C程序也可使用这个变量

用两个函数进行比较

#include<stdio.h>

int A,B,C;	//extern全局变量,调用函数的文件:extern int A,B,C;
//如果要将A,B,C限制在当前文件中则可以这样写:
//static int A,B,C;

int main()
{
    int fac(int );  //i为形参故可以省略
    int fac1(int );
    auto int n;		//auto局部变量也可不写
    printf("请输入你想算的阶乘数:");
    scanf("%d",&n);
    for (int i = 1; i <= n; i++)
    {
        printf("fac1() 函数调用 :%d!的阶乘为:%d\n",i,fac1(i));      //将n从键盘获取的值传递给形参
    }

    printf("fac() 函数调用 :%d!的阶乘为:%d\n",n,fac(n));
    return 0;
}

int fac(int i)  //构建阶乘函数
{
    int a = 1,b = 1;    //局部变量
    for (; b < i+1 ; b++)
    {
        a*=b;
    }
    return(a);      //返回运算值
}

int fac1(int i)
{
    static int a=1; //static局部变量,a会保留上次调用的值
    a*=i;              //在上次a的值上再乘i
    return(a);
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值