用C语言怎样控制硬件

 我来答
猴哥_耶
2017-12-22 · TA获得超过1283个赞
知道小有建树答主
回答量:727
采纳率:91%
帮助的人:39.7万
展开全部
  • 如果是电脑程序的话,譬如你在vc6.0里面c语言里面编写一个程序,那么vc6里面的编译器会把你的c语言语句按照对应的关系翻译成你计算机能识别的计算机语句,然后你电脑cpu会按照这些指令来控制你的硬盘,内存读写之类的硬件操作。

  • 如果是单片机之类的话,譬如你在keil里面用c语言编写了一个单片机程序,那么keil的编译器会把你的c语言程序编写成汇编语言程序文件,然后把那个汇编程序文件烧到单片机芯片上就可以让芯片按照指令工作了。

奇峰
2024-06-11 广告
好不好,谁更好这个问题是见仁见智的。这个需要顾客根据自身的情况,去选择合适自己的公司。更多详情建议可以咨询一下广州奇峰机电设备有限公司!广州奇峰机电设备有限公司主要为客户提供专业的可编程控制器产品,公司拥有专业的团队以及丰富的经验,更多详情... 点击进入详情页
本回答由奇峰提供
灭佛诸佛自然s
游戏玩家

2019-12-17 · 非著名电竞玩家
知道大有可为答主
回答量:1.4万
采纳率:34%
帮助的人:666万
展开全部
1.指针变量p分配在栈上,而字符串"abcdefg"分配在文字常量区。

2.是的。指针也是编译器生成的数据类型,是个长整型。

3.内存地址分为5块,堆区,栈区,全局(静态)数据区(分为未初始化和初始化区),
文字常量区,代码区。存储在不同区域的数据释放时间不同,存储在堆区的数据必须由程序员负责释放,用free或者是delete。而栈区的由系统自动释放。全局和静态的生存期就是整个程序运行期。

4.首先,概念性错误,编译器并不执行程序,执行程序的是你的系统。编译器只是实现了高级语言向机器语言的转化而已。至于计算机的工作原理,这个概念也太泛了,有硬件层也有软件层。硬件层基本也就是80x86的汇编和内存管理,软件层也就是操作系统了,请问你想知道什么?

5.a是数组名,最重要的是a是一个指针常量,你该了解了吧,常量是不能参与指针运算的,所以a++是错的。关于calloc和malloc,释放内存方面没什么区别(这个是个人观点)。

关于指针变量没有初始化的问题。其实指针本身也是个长整行的变量,他存放的地址完全可以理解为4*8的整数,那么他的分配方式也跟普通的变量一样了。如果你是全局指针,那么编译器会把它自动初始化为00000000(十六进制),如果是局部指针,那么这个量就是未知的了,根据函数堆栈有不同的结果。null也就是内存被写成了00000000(十六进制).这个空不是说不存在,而是内存被写成了4*8=32位的全0.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式