美文网首页
培训第十天----函数相关

培训第十天----函数相关

作者: 穹蓝奥义 | 来源:发表于2016-12-19 17:52 被阅读0次

    上节课回顾:

    homework:

    strcpy()
    strcmp()
    strcat()
    

    今日内容

    一、函数

    1.函数的基本概念

    函数是把代码中功能相似并独立的代码单独封装成一个独立的整体。

    (1)优点

    提高代码的简洁性,提高开发效率。
    提高代码的重要性。
    有利于程序的维护。

    (2)函数的分类

    分类一:

    系统函数
    由C系统提供的函数,如:printf(),scanf(),gets(),purs()
    调用系统函数时,只需要将其对应的头文件包含进来即可,

    #include<stdio.h> pirntf("hello!");
    pow(a,b)                             //计算a的b次方
    toupper                              //小写转为大写
    tolower                              //大写转为小写
    

    自定义函数:用户根据需要自己定义的函数

    分类二:

    有返回值函数,函数调用结束,会返回一个数值给主调函数;
    无返回值函数,函数结束后,没有返回值,一般定义为void类型,即空类型。

    分类三:

    有参数函数:参数可以任意多。
    无参数函数

    2.函数的基本定义

    (1)无参函数的定义

    DateType FunctionName()         // 函数头 函数名
    {
        //函数体;
        //可执行语句;
    }
    

    注:函数名后的括号 "()" 不可以省略!!
    "{}"里的都是函数体。

    (2)有参函数的定义

    DateType FunctionName(Type arg1,Type arg2)
    {
        //函数体;
    }
    

    注:Type arg1,Type arg2:称为参数列表,可以很多个,参数类型(相对而言)可以任意!

    (3)函数的定义,函数的声明已经函数的调用

    函数的定义:
    DateType FunctionName(参数列表)
    {
        //函数体;
    }
    
    函数的声明:(可有可无)
    DateType FunctionName(参数列表);         //";"不能省!!
    

    注:声明时,参数列表一定要和定义时的参数列表一致!!
    放在文件首,函数名表示函数的入口地址,告诉系统位置。

    函数的调用:

    FunctionName(value);                      //value:数值
    

    注:函数调用时,实参值的类型,一定要和函数定义时的形参列表一致!!

    实参:实际参数,具体的数值。
    形参:形式参数,形参的定义和普通变量的定义无区别!
    
    顺序:声明,自定义函数,main函数调用。

    函数定义在调用后,需要声明。
    函数之间没有优先级问题,函数之间是等价的,即平级。
    形参在发生调用时分配空间!!
    在发生函数调用时,系统会默认将实参值赋给形参。

    函数的返回值

    无返回值的类型函数类型为:viod。

    ReturnvalueType FunctionName(参数列表)
    {
        //函数体;
    }
    

    ReturnvalueType:觉定了函数返回值的类型 int test{...return value}。一定要一致!!

    若是int,则函数返回值为int型。
    若为double,则返回值为double类型。
    若是void类型的函数,则无返回值,return可有可无
    若函数不是void类型,则必须要有return!!
    

    4.return的作用

    (1)函数遇到return则结束,后面的代码不再执行

    (2)用于返回函数的值即执行结果

    5.关键字

    (1)变量分为全局变量和局部变量

    全局变量:在函数体外定义的变量。

    作用域:从变量定义处开始,直至本文件结束,定义之前不可使用。
    在全局变量定义之前不可使用全局变量。

    局部变量:在函数内定义的变量。

    作用域:是整个函数。
    函数结束时,系统会自动释放,因此不同的函数中可以使用相同的变量名。
    若全局变量与局部变量重名,则屏蔽自动全局变量。

    auto: 声明变量是动态变量,可以省略!

    动态全局变量,作用域:从定义处开展至文件末,周期为整个程序运行期间。
    动态局部变量,周期仅限于定义该变量的函数中。
    如:

    auto int a = 5;
    int a = 5;
    
    static: 声明变量为静态变量;

    作用域:从定义处到文件结束,周期为整个程序运行期间。
    若定义时未初始化,系统默认为0;
    即使初始化,根据返回值来决定下一次使用的初值!!
    静态全局变量
    静态局部变量
    静态函数:static修饰函数,则此函数只能用于本文件,其他文件中不可使用!!!!

    extern: 声明为外部变量:extern int sum;

    修饰函数:extern int test();
    声明变量或函数在外部已定义;
    register:寄存器变量:变量直接存放在寄存器中,速度快。
    CPU的寄存器个数有限,不可以定义多个寄存器变量!!底层才会使用。

    const:常量,不可更改其值。

    const int num = 5;   //只读变量5,不可更改。
    int const num = 5;   //只读变量5,不可更改。
    const int *p;       //值不可改
    int const *p;       //值不可改
    int* const p;       //地址不可改
    const int* const p;  //常指针常量 值与指针都不可更改。
    

    6.函数的传参

    传参都是单方向的,从主函数传到自定义函数。
    值传递,传值,仅对值的操作,并没有改变变量地址里的内容。
    地址传递,传址,对地址操作,修改变量对应地址的内容。
    传参的方式:传值,传地址,传引用。

    7.指针函数和函数指针

    指针函数:int *test(); 函数为一个整型指针。

    返回一个局部地址无意义,不允许。
    注意返回值问题,返回的是一个地址!!

    函数指针:int (pa)();类型是int ()(),即整型函数。

    排版用时25分钟。

    相关文章

      网友评论

          本文标题:培训第十天----函数相关

          本文链接:https://www.haomeiwen.com/subject/dwhtvttx.html