2021.11.09 函数基础(2)

函数:
    一段具有某项功能的代码段,是C语言中管理代码的最小单位
    把代码封装成一个一个的函数,可以方便管理和调用代码

    函数分类:
        标准库函数:
            C语言标准委员会为C语言以函数形式提供的一套常用的基础功能
            被封转在lib.so、libm.so等库中,使用时需要提供头文件
            通过函数名(参数)就可以调用该函数
            int isalnum(int c);
            功能:判断c是否是数字、字母字符,返回为真
            int isalpha(int c);
            功能:判断c是否是字母字符,返回为真
            int iscntrl(int c);
            功能:判断c是否是数字,返回为真
            int islower(int c);
            功能:判断c是否是小写字符,返回为真
            int isupper(int c);
            功能:判断c是否是大写字符,返回为真
            int toupper(int c);
            功能:判断c转换成大写字符
            int tolower(int c);
            功能:判断c转换成小写字符
            int abs(int c);
            功能:把j的绝对值返回
            以下函数都封装在libm.so库中,编译时加-lm导入该库
            double pow(double x,double y)
            功能:返回x的y次方
            double sqrt(double x)
            功能:返回x的平方跟
            double floor(double x)
            功能:返回小于x的最大整数
            double ceil(double x)
            功能:返回大于等于x的最小整数
            double fabs(double x)
            功能:返回浮点数的绝对值
            time_t time(time_t *tloc)
            功能:返回自1970-1-1 0:0:0到调用该函数起,过了多少秒
            time(NULL);
            void srand(unsigned int seed);
            功能:种随机种子

            int rand(void);
            功能:返回一个随机数

            获取10个[100,1000]随机数
            随机出一注双色球的中奖号码
            红球六个1~33   不能重复
            篮球个1~16    
        系统函数
            是操作系统以函数形式提供的一些功能  系统函数不能算是真正的函数,这些功能包括
                内存管理、文件IO、信号处理、文件管理、进程管理、进程通信
                线程管理、线程同步、网络通信
        第三方库函数
            一些开源或者收费的第三方代码
                glog    日志记录
                MD5     验证
                JSON    序列化和反序列化
        自定义函数
            为了更方便管理代码,减少代码冗余,把代码封装成函数的形式使用


            函数声明:
                函数声明的目的是为了告诉其他代码该函数的调用格式
                返回值的类型 函数名(参数的类型 参数名1,参数类型 参数名2,...);
                    1、c语言中,函数名全部小写,用下划线分隔
                    2、如果该函数不需要参数,建议参数写void不要空着
                    3、函数定义是,不写return语句也会有返回值,但是返回值是一个垃圾值
                    4、如果函数不需要返回值,返回值类型也要写void,否则会默认为int类型

            隐式声明:
                在调用函数之前,该函数既没有声明也没有定义,那么编译器会对该函数进行隐式声明,会猜该函数的
                的格式,如果猜测成功,也可以成功调用
                参数会根据实参猜测,返回值会猜测为int类型

            函数定义: 
                    才是函数真正的实现代码
                返回值的类型 函数名(参数的类型 参数名1,参数类型 参数名2,...)
                {
                    函数体;
                    return val;
                }
                注意:函数声明中、定义中,参数列表中的变量叫做型参变量
                注意:如果函数定义在函数调用之前,那么函数声明可以省略
                注意:建议一个函数最多不要超过50行
            函数调用:
                函数名(实参):
                注意:调用函数后,需要立即接受或者显示返回值,否则此次

            函数传参:
                1、函数的形参只属于所在的函数,除了该函数就不能在使用了
                2、实参与形参之间是以赋值的形式进行数据传递的(单向值传递)
                3、return其实是吧一个返回值放在调用者和函数之间公共的
                    区域内,如果不写return语句,该区域就是一个垃圾数据
                    一样可以被调用者读取到
                4、当数组作为函数参数时,长度会丢失,因此需要额外传递一个
                    长度参数 
                5、数组的传递是:“址传递”,此时函数与调用者可以共享数组
                练习1:
                    实现一个函数,找出数组的最大值
                练习2:
                    实现一个函数,给数组排序
                练习3:
                    实现一个函数,查找数组中是否存在某个值,如果存在返回该数据
                    在树组中的下标

设计函数的准则:
    1、一个函数最好只解决一个问题,这样可以降低出错率,提高
        可读性
    2、最好尽量不依赖其他自定义函数(耦合度)
    3、函数的数据由调用者提供,结果返回给调用者(通用性,不要把函数写死)
    4、对函数调用者提供的非法参数进行考虑处理,可以通过返回值告诉调用者,
        以及在注释中说明可能出现的非法情况
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值