• 函数以及变量


    一、函数

    1、函数的意义

    定义函数使功能更加模块化
    定义函数的时候以功能为目的,根据功能定函数的参数和返回值

    2、函数的分类

    2.1 从定义角度分类 (即函数是谁实现的)
    	库函数          (C库实现的)
    	自定义函数      (程序员自己实现的函数)
    	系统调用        (操作系统实现的函数)
    
    • 1
    • 2
    • 3
    2.2 从参数角度分类
    	有参函数
    	无参函数
    
    • 1
    • 2
    2.3 从返回值角度分类
    	带返回值的函数
    	没返回值的函数
    
    • 1
    • 2

    3、函数的定义

    函数的定义 即 函数的实现
    定义方法:
    返回值类型 函数名字( [形参 , 形参] )
    {
    // 函数体,即函数的功能
    }
    函数的定义不能嵌套,即不能在一个函数体内定义另外一个函数
    所有函数的定义都是平行的

    4、函数的声明

    4.1 函数的声明: 对已经定义的函数 进行说明

    函数的声明可以声明多次

    4.2 声明的意义:
    	有些情况下,如果不对函数进行声明,编译器在编译的时候,可能不认识这个函数
    
    • 1

    因为编译器在编译C程序的时候,从上往下编译

    4.3 什么时候需要声明 及 声明方法:

    (1)主调函数和被调函数在同一个.c文件时

    	被调函数在下,主调函数在上
    
    • 1

    声明方法1 (直接声明)

    	将被调函数的第一行拷贝过去,后面加分号
    	
    	void called_func ( ) ;
    
    • 1
    • 2
    • 3

    声明方法2 (间接声明)

    	将被调函数的声明放在头文件中,
    	在主调函数的.c中包含头文件即可
    	
    	#include  "called_func.h"
    
    • 1
    • 2
    • 3
    • 4

    (2)主调函数和被调函数不在同一个.c文件时
    声明方法1(直接声明) 加 extern (外部的意思)

    	将被调函数的第一行拷贝过去,后面加分号, 前面加 extern
    	
    	extern void called_func ( ) ;
    
    • 1
    • 2
    • 3

    声明方法2 (间接声明)

    	将被调函数的声明放在头文件中,
    	在主调函数的.c中包含头文件即可
    	
    	#include  "called_func.h"
    
    • 1
    • 2
    • 3
    • 4

    把 extern void called_func ( ) ;声明搬到called_func.h中,然后包含.h

    一般来说,定义一个.c后,需要添加一个对应的.h文件,里面写的是对.c的声明。
    需要用.c中的函数,只需要加入对应.h的头文件

    5、函数的调用

    有返回值的函数调用

    	变量=函数名([形参])
    	num = max(a,b);
    
    • 1
    • 2

    无返回值的函数调用

    	函数名([形参])
    	show_message();
    
    • 1
    • 2

    6、使用函数的好处

    定义一次,可以多次调用,减少代码的冗余度
    使代码模块化,方便调试,方便阅读
    
    • 1
    • 2

    二、变量

    1、普通的全局变量

    就是 在函数外定义的变量
    定义普通全局变量,如果不赋初值,默认为0

    作用范围:

    	程序的所有地方
    	在用之前需要声明(另一个文件中声明方法 extern int num;)
    	声明的时候不要赋值
    
    • 1
    • 2
    • 3

    生命周期:

    	程序运行的整个过程,一直存在,直到程序结束
    
    • 1

    2、静态的全局变量

    就是 在函数外定义的加 static 修饰的 变量
    定义静态局部变量,如果不赋初值,默认为0

    作用范围:

    	只在定义该变量的.c(源文件)中有效
    
    • 1

    生命周期:

    	程序运行的整个过程,一直存在,直到程序结束
    
    • 1

    3、普通的局部变量

    就是 在 函数里面 或者 复合语句 中定义的变量
    **定义普通局部变量,如果不赋初值,默认为 随机 **
    作用范围: 在哪里定义的,在哪里有效

    	在函数中定义的变量,在该函数中有效
    	在复合语句中定义的变量,在复合语句中有效
    
    • 1
    • 2

    生命周期:

    	在函数调用之前,局部变量不占用空间,
    	调用函数的时候,才会给局部变量开辟空间,函数结束了,就释放局部变量的空间
    	下一次调用的时候,重新开辟空间
    
    • 1
    • 2
    • 3

    4、静态的局部变量

    就是 在 函数里面 或者 复合语句 中定义的加 static 修饰的 变量
    定义静态局部部变量,如果不赋初值,默认为 0
    作用范围: 在哪里定义的,在哪里有效

    	在函数中定义的变量,在该函数中有效
    	在复合语句中定义的变量,在复合语句中有效
    
    • 1
    • 2

    生命周期:

    第一次调用的时候,开辟空间赋值,函数结束后,不释放,
    以后再调用的时候,就不再为其开辟空间,也不赋初值
    
    • 1
    • 2

    变量重名问题

    在同一作用范围内,不允许变量重名
    作用范围不同的可以重名
    局部范围内,重名的全局变量不起作用(就近原则)
    
    • 1
    • 2
    • 3

    三、特殊的函数

    1、外部函数

    就是普通的函数,
    即函数可以在程序的任何一个文件中调用

    2、内部函数

    返回值类型前面加了static的函数,
    只能被它所在的.c 中的函数调用

  • 相关阅读:
    Spring MVC使用SessionLocaleResolver实现用户自定义切换语言实例
    js中map和set的区别
    docker Compose 部署springboot+vue前端端分离项目
    银行面试加密算法之DES算法
    【SSM】任务列表案例 基本CRUD SSM整合
    释放数据价值的真正法宝,数据要素市场化开发迫在眉睫
    python进阶(28)import导入机制原理
    面向对象编程的六大原则
    Windows 11 上使用安卓应用及安装谷歌 Google Play和亚马逊 应用商店
    Mermaid画流程图可以实现从一条线中间引出另外一条线吗
  • 原文地址:https://blog.csdn.net/weixin_43787492/article/details/128110892