C语言函数

函数

1.避免重复性代码
2.让代码模块化

1、函数的定义
先定义再使用

  函数类型 函数名(数据类型1 形式参数1, 数据类型2 形式参数2,.....)
  {
       函数体;
       return 返回值;
  }
  
   注意:
        1.函数类型不写,默认为int类型
        2.如果不想返回结果,函数类型需要写成void类型

2、函数的调用

函数名(实参1, 实参2, 实参3, ..);
注意:
1.函数调用时实参个数必须与形参个数一致
2.如果实参类型与形参类型不匹配,那么会将实参类型强制转换为形参类型

3、函数的声明

函数类型 函数名(数据类型1 形式参数1, 数据类型2 形式参数2, ...);

主调函数:主动调用函数的函数
被调函数:被调用的函数

被调函数在主调函数的下方定义,需要将被调函数声明

4、变量的作用域及生存周期

作用域:变量能够使用的范围
生存周期:从变量被分配空间一直到空间被回收的整个过程

5、变量的存储类别
全局变量:作用域在全局均可以使用
局部变量:作用域在局部范围可以使用
1.auto(默认)
自动变量(局部变量)
局部变量作用域:在该变量定义最近的大括号内,超过大括号范围不能使用该变量

            1.未经初始化值为随机值
            2.执行到变量定义时为变量开辟空间
            3.超过变量作用域回收变量空间

2.register
寄存器变量

        如果寄存器存满了,则将变量存放在栈区中等价于auto类型

3.extern
外部变量

声明一个变量是外部存储的变量
声明外部存储的函数
        
 定义:之前变量是不存在的,定义该变量为变量分配内存空间
 声明:之前变量是存在的,声明该变量的类型,同时声明变量是存在的

4.static
静态变量

    1.未经初始化值为0值
    2.在编译时分配内存空间,程序执行结束回收空间
    3.限定变量或者函数只能在本文件中使用
    4.防止多文件全局变量函数重名

6、函数传参

1.值传递(复制传递、赋值传递)
    实参将值传递给形参

    函数体内想使用函数体外部变量值的时候

2.全局变量传递

3.整形数组的传递
    int a[5] = {1, 2, 3, 4, 5};

    int fun(int array[], int len);

    注意:
        数组传参,函数体内可以按照函数体外的方式操作数组

7、递归函数
函数体在定义时调用函数体本身

注意:
    1.递归函数一定要有结束条件
    2.避免深层次的递归

8、宏

    1.不带参宏
    2.带参宏(宏函数)

带参宏和函数的区别:
    1.函数是有参数类型、返回值、调用相关概念,带参宏是没有的
    2.宏函数是在编译的时候加载到程序中,函数是在运行时加载到程序中
    3.宏函数会使代码体积增大,函数不会使代码体积增大
    4.宏函数执行效率高,函数因为有调用和传参的过程会占用系统资源开销,所以执行效率低一些
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值