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机制,在调用异步函数时传入一个函数指针;
异步函数的内部保存该函数指针,在函数真正执行完成时通过该函数指针通知调用方。

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

推荐阅读:

C++ 隐式类类型转化 Implicit Class-Type Conversions

C语言变长数组之剖析

C语言需要注意的问题

C语言位域的使用及其注意点

C语言中简单的for循环和浮点型变量

《C语言从入门到精通》.(王娣,韩旭 ).[PDF] + DVD视频光盘文件

相关内容

    暂无相关文章