【答疑解惑】什么是API?

有朋友在群里问什么是API?这个问题是很多初学者常常听到但又感觉讳莫如深。

API的英文是ApplicationProgramming Interface,也就是应用程序编程接口。以下选自百度百科对API的解释说明:

API(ApplicationProgramming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

简单的说就是为第三方提供具有特定功能或者实现的函数,一般情况下,该函数不对外提供源码,只有提供函数接口的参数和功能的详细说明。所有的系统平台都提供大量的API,比如Windows、Unix/Linux、Mac。除了系统平台,大量开源软件、中间件也提供许多API共用户调用以实现特定功能。下面我举一个典型的Windows API:

UINT WINAPI GetSystemDirectory(LPTSTR lpBuffer, UINT uSize);

说明:该函数获取Windows的系统目录。参数lpBuffer提供用于返回的系统目录,uSize表示lpBuffer控件的大小。如果你的Windows系统安装在C盘,返回结果应该是C:\Windows\System。

广义上说,各种编程语言提供的库函数也可以称为API,因为不管从哪个角度来说,它都满足API这个定义,只是我们常常把编程语言叫做库函数,本质上API也是以函数提供。只要你在编程,你就会使用API。

对于我们编程人员来说,就是要正确使用API才不至于导致错误,使用API需要注意的就是认真阅读API的各个参数、返回值、注意事项以及关系密切的API说明。只要注意到这些,绝大多数的API都难不倒你了。

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-09-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java帮帮-微信公众号-技术文章全总结

day28.Redis【Python教程】

下载:打开redis官方网站 https://redis.io/,推荐下载稳定版本(stable)

601
来自专栏大数据文摘

业界 | Dropbox力荐!我们如何应对Python桌面应用程序的崩溃

揭秘Crashpad系统如何帮助Dropbox这样复杂的桌面程序捕获并报告崩溃,且兼容Python的多种语言。

601
来自专栏unlike

用paxos实现多副本日志系统--multi paxos部分

上篇 basic paxos : https://cloud.tencent.com/developer/article/1147420

2398
来自专栏风中追风

为什么redis 是单线程的?

在说这个事前希望大家都能对 CPU 、 内存 、 硬盘的速度都有了解了,这样可能理解得更深刻一点,不了解的朋友点:CPU到底比内存跟硬盘快多少

62011
来自专栏蓝天

Unix&Linux下常见的性能分析工具介绍

Vmstat是一个很全面的性能分析工具,可以观察到系统的进程状态、内存使用、虚拟内存使用、磁盘的IO、中断、上下文切换、CPU使用等。系统性能分析工具中,使用...

581
来自专栏Crossin的编程教室

【Python 第20课】 命令行常用命令

【Python 第20课】 命令行常用命令 今天茬开话题,说一下命令行(Windows下叫“命令提示符”,Mac下叫“终端”)里的常用命令。已经熟悉同学可略过。...

3235
来自专栏腾讯DevOps

SVN切换到Git方法及坑点

SVN和Git同样都是在特定时代下比较优秀的版本控制系统,但是随着时代的发展,SVN越来越不能满足多人开发的需求,尤其是在多种多样,天马星空的业务场景面前,SV...

2065
来自专栏杨建荣的学习笔记

简单分析percona-zabbix-templates(r10笔记第6天)

当Zabbix和Percona两者相遇,会擦出不少的开源火花来,众人拾柴火焰高,最终受益的还是大部分运维人员。 我很早就用过Percona提供的...

3626
来自专栏零基础使用Django2.0.1打造在线教育网站

利用Flask搭建微电影视频网站(七):电影管理

努力与运动兼备~~~有任何问题可以加我好友或者关注微信公众号,欢迎交流,我们一起进步!

1612
来自专栏BeJavaGod

通过spring实现javamail的那些事儿

以前很早的时候大家都用javamail实现发送邮件的功能,而且我们也一直沿用至今,代码拷过来用用就行了,现在我们改为用spring来实现,这样一来减少代码的复杂...

2844

扫码关注云+社区