zoukankan      html  css  js  c++  java
  • 五、 函数

    1.函数就是有特定功能的代码段
    2.函数的分类:
    库函数:
    自定义函数:
    3.函数的声明、定义和调用
    4.函数定义:
    (1)返回值类型:函数的结果值类型,函数不能返回数组,指定返回类型是void类型,说明函数没有返回值(注意,返回值不能为数组)
    (2)函数名:函数名命名规范和变量名命名规范一样
    (3)参数列表:每个形式参数的前面说明其类型,即使几个参数具有相同的数据类型,也必须对每个形式参数分别进行类型说明。形式参数用逗号进行分隔,就算没有参数,函数后面的()也不能省略,可以写成(void)
    (4)函数体:函数功能的实现
    5.结构
             返回值类型 函数名 参数列表{
               
                功能代码;
                return 返回值;
            
             int a(int b){
                return a+b;
             }
    6.函数的定义分类:注意return后面的代码不被执行
    (1)无参无返回值:
    //测试无参无返回值可以添加return语句,但是return之后的语句将不再被执行
    void sayHello(void){
         printf(“Hello”);
    }
    (2)无参有返回值
    //返回值后面的数据,返回给主调函数
    //有返回值类型,就一定要有返回值,其(返回值)类型域返回值类型对应
    int getCount(void){
         return 33;
    }
    (3)有参无返回值
    //如何写参数:类型 + 参数名(形式参数,又叫形参)
    //如果参数列表内参数都是同类型,也不能省略数据类型,用逗号隔开。
    //函数名:驼峰命名,见名知意。
    (4)有参有返回值
    //注意事项:以上三个结合
    //函数名不能重复定义
    7.返回值:
    (1)函数执行完毕之后的结果,这个结果通常是一个数值,就是函数的返回值,只能通过return返回给主调函数
    (2)函数的返回值只有一个,返回结果用return
    (3)函数即使没有返回值,也可以用return来结束函数的执行,返回给主调函数
    (4)return后面的语句不再执行
    8.函数的声明:就是函数的描述又叫函数原型
    9.结构:返回值类型 函数名(参数列表)
    注意事项:
    (1)如果函数的定义出现在主调函数之后,需要提前进行函数的声明(也就是写在主调函数之前)
    (2)如果函数的定义出现在主调函数之前,可以省略函数的声明。
    10.函数调用:在主调函数中调用(调用被调函数的函数)即使函数没有参数,但是在调用函数时。一定不能省略”()“
    11.不需要写返回值类型,直接写函数名
    12.实参可以写常量,也可以写变量,还可以写常量表达式
    13.形式参数:出现在函数定义中,用”假名字“来表示被调用时需要提供的”真名字“。也就是用来接收调用函数时传入的参数
    14.注意:形参只有在函数被调用时,才会在内存中分配存储单元,用来存储数据,当函数执行完毕后,存储单元将被系统收回。
    15.实际参数:用于给函数传值。出现在主调函数调用的表达式。
    注意:在调用函数时,实参将赋值给形参,因此,必须注意实参的个数,而实参的类型一定要与形式参数类型一一对应,并且注意,一定要有确定的值。
    注意:函数调用中,形参会拷贝实参的内容,传递参数是给函数传递信息的一种形式
    17.XXX.h——头文件,函数的声明一般写在头文件里
    18.XXX.m——实现文件,函数的定义一般写在实现文件里
    19.函数的嵌套调用:C语言中,不允许函数的嵌套定义,但是可以嵌套使用
    20.函数的嵌套调用:函数内调用函数
    21.如果无返回值类型,默认的返回值则默认为int类型,所以,即使没有返回值,也得将返回值类型写为”void“类型
    22.如果返回值与返回值类型不匹配,则定义的返回值类型为准
    23.递归函数:
    C语言中,允许函数内再次调用函数,称为函数的递归调用。也就是说,函数自己调用自己。
    注意:函数的递归调用,一定要有一个出口。因为函数的递归就类似是一个循环,所以一定要有一个出口,否则就是死循环
    24.局部变量:函数内部定义的变量,只有当前函数内有效,同样,主函数里的变量,也是如此,一个函数不能使用其他函数内定义的变量。函数执行完毕后的,系统会自动回收局部变量所占的内存。形参也是局部变量。
    注意:
    (1)不同函数内可以使用相同名字的函数,相互之间不会受到影响,所以他们所分配的内存单元也不相同。
    (2)如果一个变量定义在一个分支结构中,这个变量只在当前结构内有效
    25.全局变量:在函数外定义的变量,有效范围从定义的全局变量开始到文件的结束。
    26.如果全局变量和局域变量名相同时,在局域变量作用范围内,以局部变量为准,全局变量失效。
    注意:在开发过程中,除非有特殊需求,否则不要使用全局变量,因为所有函数都可以使用全局变量,我们不确定全局变量对哪个值作出了修改,造成数据问题。
    27.从空间角度分为:局部变量和全局变量
    28.从生命周期分为:静态存储和动态存储
    (1)动态存储方式:比如函数中的局部变量,当函数中的局部变量,当函数执行完毕后,系统会将变量所分配的内存单元立刻收回
    (2)静态存储方式:变量存储在静态区,比如全局变量,在程序运行开始,被分配内存单元,直到程序运行结束,才被系统收回
    29.static:被它修饰的变量叫做静态变量,比如静态局部变量,静态全局变量。
  • 相关阅读:
    centos 安装 redis3.2.0 集群
    CentOS7安装配置redis-3.0.0
    CentOS7/RHEL7安装Redis步骤详解
    鸟哥之安裝 CentOS7.x
    Centos 7 学习之静态IP设置
    CentOS7 下linux不能上网解决方法​,centos7 eth0 没有ip,IP突然丢失
    javamail发送邮件(转)
    Apache James使用的方法及相关心得(转)
    Velocity缓存与穿透(转)
    十分钟搞懂什么是CGI(转)
  • 原文地址:https://www.cnblogs.com/gnhxsk/p/5170641.html
Copyright © 2011-2022 走看看