sshgame6 2017-12-01 17:15 采纳率: 25%
浏览 1189
已采纳

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

①例如程序中有一个赋值语句 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条回答

  • threenewbee 2017-12-01 17:29
    关注

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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

问题事件

  • 已采纳回答 7月26日

悬赏问题

  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集