• 函数以及变量


    一、函数

    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 中的函数调用

  • 相关阅读:
    Netty学习笔记之Java I/O
    ubuntu18.04创建共享文件夹
    一种ESDF地图实现方法:FIESTA
    项目实战:Qt+OpenCV大家来找茬(Qt抓图,穿透应用,识别左右图区别,框选区别,微调位置)
    如何用scratch的“变量和链表”解决“洛书”问题(九宫格)
    韩语难学吗
    【ElM分类】基于麻雀搜索算法优化ElM神经网络实现数据分类附代码
    kafka基础知识点整理
    18.5 重载全局new、delete、定位new及重载等
    【微机原理笔记】第 6 章 - 输入输出和中断技术
  • 原文地址:https://blog.csdn.net/weixin_43787492/article/details/128110892