C语言函数

Posted fengzi759

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言函数相关的知识,希望对你有一定的参考价值。

  1. 函数的概念

    • 函数是c语言的功能单位,实现一个功能可以封装某一个函数来实现

    • 定义函数的时候一切以功能为目的,根据功能去定函数的参数和返回值

  2. 函数的分类

    • 从定义角度分类(即函数是谁实现的)

      • 库函数(c库实现的)

      • 自定义函数(程序员自己实现的函数)

      • 系统调用(操作系统实现的函数)

    • 从参数角度分类

      • 有参函数

        • 函数有形参,可以是一个,或者多个,参数的类型随便

        • 完全取决于函数的功能

        • int fun (int a,float b,double c)

        • int max(int x,int y)

      • 无参函数

        • 函数没有参数,在形参列表的位置写个void 或什么都不写

        • int fun (void)

        • int fun()

    • 从返回值角度分类

      • 有返回值的函数

        • 在定义函数的时候,必须带着返回值类型,在函数体里,必须有return

        • 如果没有返回值类型,默认返回整型

        • char fun()// 定义一个返回字符数据的函数

        • char b = ‘a’;

        • return b ;

        • fun ()

        • return 1;

        • 如果把函数的返回值类型省略了,默认返回整型

        • 注意:在定义函数的时候,函数的返回值类型,到底是什么类型的,取决于函数的功能

      • 没返回值的函数

        • 在定义函数的时候,函数名字前面加void

        • void fun(形参表)

        • 在函数里不需要 return

        • 如果想结束函数,返回到被调用的地方,return;什么都不返回就可以了

  3. 函数的定义

    • 函数的定义是 即函数的实现

    • 函数的定义方法

      • 返回值类型 函数名字(形参列表)

      • //函数体,函数的功能在函数体里实现;

      • 注意: 函数必须带类型,而且以逗号隔开

      • 函数的定义不能嵌套,即不能再一个函数体内定义另外一个函数。 所有的函数都是平行结构

      • 再一个程序中,函数只能定义一次,也就是不能出现函数重名的现象

  4. 函数的声明

    • 概念

      • 对已经定义的函数,进行说明

      • 函数的声明可以声明多次。

    • 为什么要声明

      • 有些情况下。如果不对函数进行声明,编译器再编译的时候,可能不认识这个函数。

      • 因为编译器再编译的c程序的时候,从上往下编译的

    • 声明的方法

      • 什么时候需要声明

        • 主调函数和被调函数再同一个.c文件中的时候

          • 被调函数再上,主调函数在下 这时候就不需要声明

          • 被调函数在下,主调函数在上,这时候就需要在主调函数中声明被调函数;

      • 直接声明法

        • 将被调函数的第一行拷贝过去,后面加分号

        • 举例

          • void fun(void);

          • int main()

          • fun();

          • void fun (void)

          • printf("hello world\n");

      • 间接声明法

        • 将函数的声明放在头文件中,.c程序包含头文件即可

        • 举例

          • 在a.c文件中编译这个

            • #include " a.h"

            • int main()

            • fun();

            • void fun(void)

            • printf("hello world\n");

            • 在a.h文件中编译这个

            • extern void fun(void)

      • 主调函数和被调函数不在同一个.c文件中的时候

        • 一定要声明

        • 声明的方法

          • 直接声明法

            • 将被调用的函数的第一行拷贝过去,后面加分号,前面加extern

          • 间接声明法

            • 将函数的声明放在头文件中,.c程序包含头文件即可

      • 注意头文件 后缀为.h文件

    • 函数的调用

      • 函数的调用方法

        • 变量 = 函数名(实参列表);//函数带返回值的前提下

        • 函数名(实参列表);//不带返回值 的

      • 有返回值的,根据返回值的类型,需要在主调函数中定义一个对应类型的变量接受返回值

        • 举例

          • int max(int x,int y)// x,y是形参 是个变量

          • int main()

          • int num;//需要定义一个num 接收max函数 的返回值

          • num = max(4,8);//4和8就是实参

      • 没有返回值的函数,不需要接受返回值

      • 举例

        • void fun(void)

        • printf("hello world\n");

        • int main ()

        • fun();

      • 有无形参

        • 函数名(实参列表);//带形参的函数 需要传实参

        • 函数名();//没有形参的 可以直接调用

        • 注意:实参可以是常量,可以是变量,或者是表达式

        • 形参是变量,是被调函数的局部变量

    • 函数的总结

      • 定义函数的时候,关于函数的参数和返回值是什么情况,完全取决于函数的功能

      • 使用函数的好处

        • 定义一次,可以多次调用,减少代码的冗余度

        • 使咱们代码,模块化更好,方便调式程序,而且阅读方便

  5. 打字游戏思路

    • 随机函数

      • srand((unsigned)time(NULL)); 以当前时间为种子,设置随机种子

      • ch = rand()

        • 注意: rand()函数,每调用一次,产生一个随机数字

        • rand()%26 产生0~25中随机数 rand()%26+‘a‘ 随机产生一个字母

    • linux 获得键值函数

      • ch = mygetch();//无需按下回车,可直接获得键盘上按下的键值

    • 时间函数

      • start_time = time(NULL);

      • end_time = time(NULL);

      • //可以返回系统当前时间,以秒为单位

    • window下

      • 头文件需要 #include< conio.h >

      • ch = getch();

    • linux

      • system("clear");//清空屏幕

    • windows

      • #include< windows.h >

      • system("cls");//清空屏幕

    • c语言获取程序运行时间

      • 所需头文件 time.h

      • 所需函数clock

      • 函数介绍

        • 用于获取程序启动时间到这次调用clock函数的CPU占用时间

        • 用于衡量秒的单位,1000也就是千分之一秒,也就是当过了一毫秒clock会自动增加1,着也是为什么在计算完之后要除以1000,换算成毫秒

        • 用法 先定义两个 clock_t start,finish; 变量,用于存取开始的时间和结束的时间

        • 在定义一个 double time; //用于存储程序执行的时间

        • 你想知道程序哪个部分运行的时间

          • 在这个程序的首行写 start = clock(); 获取程序启动的时间

          • 在这个程序的尾行写 finish = clock();获取程序结束的时间

          • 时间差 time = (double)(finish-start)/CLOCK_PER_SEC //获取程序执行的时间

          • clock会把这个值并根据宏定义的CLOCKS_PER_SEC 来进行毫秒单位转换,假如clock_t是1000,那么CLOCK_PER_SEC也是1000,clock就会返回给你1毫秒

          • 因为 clock_t是长整型long,返回的是整型,所以我们需要进行强制类型转换

    • exit(0) 正常退出程序 exit(1)和exit(-1) 异常退出程序

以上是关于C语言函数的主要内容,如果未能解决你的问题,请参考以下文章

c语言 时间函数

C语言 函数定义 函数声明 区别

在C语言里标准函数存放在啥文件中?

C语言中不能在函数里面声明函数吗

c语言怎么写重载函数?

什么是C语言标准函数库?平常用的哪些函数属于标准函数库?