C语言——函数

函数

一段具有某项功能的代码,★函数是C语言中管理代码的最小单位

把代码封装成一个个函数,可以方便管理和调用代码

函数的分类:

1.标准库函数

由C语言标准委员会为C语言以函数的形式提供的一些基础功能,被封装在libc.so库中,使用时需要包含对应的头文件,通过对应的函数名(实参)方式即可调用标准库中的函数

  • #include<time .h>

time_t time (time_t *tloc)

功能,返回自1970-1-1 0:0:0 到函数执行时总共过了多少秒

time_t sec = time(NULL)

  • #include<stdlib.h>

int system(const char *command);

功能:执行系统命令

system(“clear”);

  • int rand(void)

功能:返回值 一个随机数

int num = rand();

  • void srand(unsigned int seed);

    功能:种随机种子

练习3:获取10个【100,1000】之间的随机数,循环不超过10次

练习4:红球一共6组,每组从1-33钟抽取一个,六个互相不重复,然后蓝球是从1-16中抽取一个数字

随机产生一组 双色球号码

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
​
int main(int argc,const char* argv[])
{
    srand(time(NULL));
​
    char red[6] = {},cnt = 0,i = 0;
    while(6 > cnt)
    {
        int num = rand()%33 + 1;
        for(i=0; i<cnt; i++)
        {
            if(num == red[i])
            {
                break;  
            }
        }
        if(i == cnt)
        {
            red[cnt++] = num;   
        }
    }
​
    printf("red:");
    for(int i=0; i<6; i++)
    {
        printf("%hhd ",red[i]); 
    }
    printf("blue:%d\n",rand()%16+1);
}
​

2.系统函数

是操作系统以函数接口形式提供的一系列功能,但是它不是真正意义上的函数

功能:内存管理、文件管理、文件IO、信号处理、进程管理、进程通信、线程管理、线程同步、网络通信

3.第三方库函数

由第三方提供的开源或者收费的代码库

MD5 加密算法

Json 序列化、反序列化

Xml 配置文件解析

4.自定义函数

为了更好地管理自己的代码、减少代码冗余,把代码封装成函数形式

①函数声明:

函数声明的目的是为了告诉其他代码该函数的调用格式

隐式声明:在调用函数时,前面没有出现过该函数的声明或定义,就会产生隐式声明的警告,参数会根据实参来猜测,返回值会猜测会int类型

反正不要产生隐式声明,只要在调用前有声明或定义即可(定义在调用之前,声明可以省略),声明内容要与定义完全一致

返回值类型 函数名(类型1 形参名1, 类型2 形参名2, ...);

注意:

  1. C语言中函数名一般全都小写,下划线分隔

  2. 如果返回值不需要,则写void

  3. 如果不需要形参,建议也写上void

  4. 就算形参类型相同,每个形参都要加类型名

②函数定义:函数的实现代码

返回值类型  函数名(类型1  形参名1, 类型2  形参名2, ...)
​
{
      //函数体
      return [val] ;    
}

③函数调用:

函数名(实参);

注意:

  1. 在函数调用之前有函数定义,则函数声明可以省略

  2. 函数的返回值会返回在调用位置,可以立即显示,也可以用变量记录下来

  3. 一个函数建议不要超过五十行代码

函数传参

  1. 形参变量、函数内定义的变量都只属于它所在的函数,出了该函数就不能再用了

  2. 普通实参与形参之间是通过赋值的方式传递数据的 (单向值传递:实参传形参

  3. return 其实是把数据存放到一个公共区域(函数之间都可以访问的区域),如果不写return语句,那么就会读取该区域原来的数值,就得到一个垃圾数据

  4. 数组作为函数的参数时,中括号中的长度就会丢失,需要额外增加一个变量传递数组的长度

  5. 数组作为函数参数传递时,传递的是数组的首地址,叫做“址传递”,函数和函数的调用者可以共享同一个数组

    练习1:实现函数,找出数组中的最大值

    练习2:实现函数,对数组进行升序排序

    练习3:实现一个函数,查找数组中是否存在某个值,如果存在则返回该值的下标

设计函数的建议:

  1. 一个函数最好就解决一个问题,降低错误率,提高可读性

  2. 尽量减少函数之间的依赖层数(降低耦合度)

  3. 数据由调用者提供,结果返回给调用者

  4. 考虑函数的非法参数,可以通过返回值的方式告诉调用者参数有误,也可以通过注释方式写明情况(提高函数的健壮性)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaoyu1381

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值