zoukankan      html  css  js  c++  java
  • C++基础之函数

    函数的定义

    ```

    类型标识符 函数名(形式参数列表)

    {

    变量的声明

    语句

    }

    ```

    函数的声明

    调用一个函数钱必须先声明函数的返回值类型和参数类型。

    返回值

    指函数被调用之后,执行函数体中的程序段所取得的并返回给主调函数的值,用return语句返回给主调函数。

    ```

    return(表达式);

    ```

    1.函数返回值类型和函数的类型应该保持一致,不一致则以函数类型为准,自动进行类型转换。

    2.返回值为整型,可以省去类型标识符

    3.可以有多个return,但每次调用只能有一个return语句被执行,因此只有返回一个函数值

    4.不返回函数值的函数,类型标识符为 `void`

    5.没有参数和返回值的函数为空函数

    形参和实参

    1.函数未调用,形参不占用内存,调用时才分配内存,调用结束即释放

    2.实参时确定的值,调用函数式传递给形参,形参为指针类型,将地址值传递给形参

    3.实参与形参类型,个数应相同

    4.单项传递,即实参传给形参

    默认参数

    在定义函数是,已经设置好的参数。

    可变参数

    在参数列表中有 `...`

    函数调用

    1.传值调用:主调函数将实参赋值给被调用函数的形参出,传递参数是结构体对象,可以通过传指针或使用变量的引用老替换传值调用

    2.嵌套调用

    3.递归调用:直接或间接调用自己的函数

    变量作用域

    全局变量:在函数体外定义的变量,在程序开始时创建并分配空间,程序结束时释放内存并销毁

    局部变量:在函数体内定义的变量,函数调用时创建,并在栈中分配内存,调用结束后销毁并释放

    重载函数

    多个函数具有相同的函数标识符,但参数类型和个数不同,函数 调用时,编译器以参数的类型及个数类区分调用哪个函数

    内联函数

    `inline`把函数定义为内联函数,编译器会在每个调用该函数的地方展开一个函数的副本

    变量的存储类别

    变量存储方式的不同会使变量的生存期不同,静态变量一直存在,动态变量时而存在时而消失

    1.auto变量:没有说明存储类型的变量均视为自动变量

    1.作用域仅限于定义该变量的个体内

    2.属于动态存储方式,变量分配的内存在栈中,函数调用结束是则释放

    3.不同个体中允许使用同名的变量而不会混淆

    2.static变量:将变量声明为静态变量

    1.在函数内定义,程序退出时释放,生存期为整个源程序

    2.作用域与自动变量相同

    3.编译器会为静态局部变量赋予0值

    3.regidter变量:将局部变量的值存放在CPU中的寄存器中,使用时不需要访问内存,直接在寄存器中读写

    1.动态存储方式,需要采用静态存储方式的变量不能定义为寄存器变量

    2.编译程序会自动决定哪个变量使用寄存器存储

    4.extern变量:使用其他源文件中的全局变量时,只需要在本源文件中使用external声明这个变量即可

    秋来凉风起,无限思远人
  • 相关阅读:
    解决“Caused by: org.gradle.api.plugins.UnknownPluginException: Plugin with id 'org.springframework.boot' not found.”
    linux随机生成密码
    NFS网络共享文件系统
    shell实现带颜色输出的进度条
    【AtCoder】 ARC 101
    【AtCoder】 ARC 102
    【AtCoder】 ARC 103
    20190814校内模拟赛
    「2019-8-13提高模拟赛」树 (tree)
    [PA2014]Fiolki
  • 原文地址:https://www.cnblogs.com/lalavender/p/10487001.html
Copyright © 2011-2022 走看看