c语言函数与函数调用学习

函数(function)表示每个输入值对应唯一输出值的一种对应关系。
所以一个完整的函数由函数名、函数体、输入输出参数以及返回值等几部分组成。
下面就是一个类似于strcpy函数的实现案例,
char* strcpy(char* dest, const char* src)
{
    char * temp = dest;
    while(*temp != '\0')
    {
        *temp = *src;
        temp++;
    }
   
    return dest;
}

如果是调用库函数或者别的模块提供的接口函数,那么在调用之前就必须先弄清楚:
1. 函数可以实现的功能;
2. 函数的返回值代表的含义;
3. 函数的参数是输入参数还是输出参数,参数应该如何传。
这就必须要阅读接口相应的文档资料;
如果以上几点都没有完全搞清楚就去调用接口函数,那出错也就不足为奇了。

如果是提供接口函数给其他模块使用,则必须要:
1. 函数名称应该很直观的表现函数的功能;
2. 函数功能应该要越简单越好,一个函数只做一件事;
3. 必须提供对函数名、函数功能、函数输入输出参数以及返回值的说明。

同步函数,就是当函数执行正常返回时,函数所要做的事情都已经做完了。
异步函数,函数会立即返回,但是函数所要做的事情还没有完成。

单线程环境下,程序总是会被顺序的执行(去掉中断的情况),总是一个函数调用另一个函数。
必须要等到被调用函数执行完,程序才能继续往下执行。
所以单线程环境不存在异步函数或异步调用的概念。

为什么要使用异步函数?
这是因为如果函数执行需要较长的时间,此时再调用同步函数,线程就会被卡住直接函数执行完成。
异步函数调用如何保证同步呢?
最简单的方法就是通过callback机制,在调用异步函数时传入一个函数指针;
异步函数的内部保存该函数指针,在函数真正执行完成时通过该函数指针通知调用方。

同步调用直观简单易于理解;
异步调用需要更加注意多线程间的消息同步以及程序设计方法。
总之要根据具体软件设计的需要来决定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值