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日

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘