• 嵌入式学习——C语言基础——day8


    1. 函数的三种形式

    1.1 函数的定义

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

                {
                    函数体;
                    return 返回值;
                }

            注意:

                    1. 函数类型为函数运行结果的类型

                    2. 函数返回值与函数类型不匹配时,强制将返回值转换为函数类型后返回

                    3. 函数类型不写默认为int类型

                    4. 函数的命名与变量命名规则相同

                    5. 函数没有返回结构,函数类型写成void

    1.2 函数的调用

                函数名(实参1, 实参2, 实参3, ..);

                主调函数:主动调用函数的函数,(例:main函数)
                被调函数:被调用的函数(例:自己编写的函数)

            注意:如果实参类型与形参类型不匹配,那么会将实参类型强制转换为形参类型传入到函数中

    1.3 函数的声明(函数头+" ; ")

            被调函数在主调函数下方时,需要对被调函数进行声明

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

    2. 变量的作用域及变量的生存周期

    2.1 变量作用域

            变量能够使用的范围

    2.2 变量生存周期

            从变量被分配空间到变量分配空间被回收的整个过程

    2.3 变量存储类型(默认auto)

            1. auto——自动型变量(局部变量)(存储在栈区)

                    1. 局部变量作用域在该变量定义最近的大括号内,超过大括号范围不能在使用该变量

                    2. 未经初始化为随机值

                    3. 程序执行到变量定义时为变量开辟空间

                    4. 超过变量作用域回收变量空间. 

            2. register——寄存器变量(存储在寄存器中)

                    注意:若寄存器存满,则将寄存器变量放在栈区中,等价于auto类型

            3. extern——外部存储

                    1. 作用

                            声明一个变量时外部存储的变量

                            声明外部存储的函数

                    2. 定义与声明的区别

                            1. 定义:之前变量是不存在的,定义该变量为变量分配内存空间

                            2. 声明:之前变量是存在的,声明该变量的类型,同时声明变量是存在的

            4. static——静态变量(数据区)

                    作用

                            1. 修饰变量,让该变量称为静态变量

                            2. 限定变量或者函数只能在本文件中使用

                            3. 防止多文件全局变量函数重名

                    原理

                            1. 静态变量未经初始化值为0

                            2. 在编译时为静态变量分配内存空间

                            3. 程序执行结束后,回收静态变量空间

                    注意: 一个c语言程序,先编译,再运行,auto int a的内存空间是程序运行时候在栈区开辟的,static int c是程序运行之前编译时候已经被挑出来在数据区开辟空间

            5. 全局变量(存储在数据区)

    2.4 变量的定义

        存储类型 数据类型 变量名;(存储类型默认auto)

    3. 函数的传参

    3.1 值传递

    3.2 全局变量传递

    3.3 整形数组传递

            int a[5] = {1, 2, 3, 4, 5};

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

          

  • 相关阅读:
    配置nacos组件
    记一次Netty堆外内存溢出OutOfDirectMemoryError
    如何不加锁地将数据并发写入Apache Hudi?
    应对Redis缓存污染问题,你应该知道这些内容
    基于开源模型搭建实时人脸识别系统(五):人脸跟踪
    回归预测 | MATLAB实现BP神经网络多输入单输出回归预测
    在linux上做移动开发必须知道这五个
    详解JS遍历数组的十八种方法
    雅思 听力
    Win11如何更改默认下载路径?Win11更改默认下载路径的方法
  • 原文地址:https://blog.csdn.net/qq_47798402/article/details/138168078