Windows系统下,c语言、c++语言中的给变量赋值,也是最终通过API实现的吗? 10C

①例如程序中有一个赋值语句 a=100; 程序执行时,也是转化为调用系统API来将变量a所代表的存储区域赋值100吗?
②对于程序,即是在程序中没有直接使用Windows API ,例如,main函数只包括printf,即只是使用 printf 输出一个内容时,那么程序执行时,也是最终调用系统API来完成输出的吗?

③Windows API是不是可以这样理解:像scanf printf等是建立在API函数的基础上的,是封装了API函数的集合,换句话说,是别人为了方便而写的一些常用的功能,但是如果有自己的特定需求,就需要自己在代码中直接调用API函数?即printf是别人从Windows几万个API函数中找了一些函数,组装成了 printf,而我在程序中调用API是我自己直接使用API函数,组装printf使用的API函数与我可以直接调用的API函数没有什么特别之处,都是这几万个API函数 ——这样理解API对吗

8个回答

(1)
当然不是,直接cpu拷贝值。
具体来说就是
mov ptr[变量a的地址], 100
(2)(3)
api是几个动态链接库的函数库。和你自己定义一个函数其实没有什么区别。scanf printf是c的函数库中的函数,它们在底层调用不同的操作系统调用,对于windows来说,就是api函数。
有自己的特定需求,就需要自己在代码中直接调用API函数。前提是api函数中有这个需求的函数调用。
windows api是面向操作系统的,比如读写文件、输出控制台、创建用户界面,这些api有函数。但是你说,你要写一个算圆周率的,api函数也没有,还得自己写。api函数不是万能的。

如果问题解决,麻烦点下回答右边的采纳,谢谢

api 就是功能接口的意思。你要是做了一个很牛逼的模块,专门实现某方面的一系列功能(比如抓取某个网站,或者任何矩阵计算),
然后要让别人用你的模块,你就要定义好几个 api 函数,用户只要通过调用这些 api 函数,就能完成这类事情。调用 api 的时候,
一般会涉及资源分配啥的,总之一般不是很简单的操作。而你说的赋值(内存读写),或者简单的加减乘除,这些都是很原子级的操作。
任何 api 函数最终无非都是由一系列运算或者内存读写构成,而不是赋值由 api 构成……

api是几个动态链接库的函数库。和你自己定义一个函数其实没有什么区别。scanf printf是c的函数库中的函数,它们在底层调用不同的操作系统调用,对于windows来说,就是api函数。

Windows API是不是可以这样理解:像scanf printf等是建立在API函数的基础上的,是封装了API函数的集合,换句话说,是别人为了方便而写的一些常用的功能,但是如果有自己的特定需求,就需要自己在代码中直接调用API函数?即printf是别人从Windows几万个API函数中找了一些函数,组装成了 printf,而我在程序中调用API是我自己直接使用API函数,组装printf使用的API函数与我可以直接调用的API函数没有什么特别之处,都是这几万个API函数 ——这样理解API对吗

任何语言的赋值都是用寄存器和汇编语言进行的,通过汇编指令MOV编写赋值语句MOV ax,bx,给变量赋值。你了解下汇编语言和计算机组成原理就会明白了,至于API,它的全称是Application Programming Interface,翻译过来就是应用程序编程接口,和语言的底层无关

只要在程序中你没调用windows api 编译执行的时候就不会用到。

不会用到,楼上已经解释的很清楚了,

程序中没调用Windows API编译执行的时候不会用到,这么想吧,c/c++可以用在linux系统,而如果你的系统里没有api库(因为不是Windows,所以没有Windows库),printf等就没有用了吗?所以说是不会用到api的

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问