Ⅰ 为什么说c语言是直接对硬件操作的语言
首先,C语言不能够直接对硬件进行操作。从本质上来说,连汇编语言都不可以。只有机器语言能够直接操作硬件。
其次,C语言要操作硬件是必须经过一系列的编译转换。最终它会成为0101的机械码,这个时候它根本不是我们所能够理解的C语言了。
以GCC编译器为例,这个可以分为四步。
第一步是预处理,包括语法检查等工作。
gcc -P abc.c
第二步由源程序生产汇编语言代码。
gcc -S abc.c
会生成abc.s文件,这个文件里就是汇编代码。
第三步编译器生成目标代码,一个源文件生成一个目标代码。
gcc -c abc.c
会生成abc.o
第四步连接器从目标代码生成可执行文件。
gcc abc.o最后,相对来说,C语言在高级语言当中是最贴近物理层面的语言。它也被称作高级语言里面的低级语言。因为它很多方面都非常贴近硬件。典型的就是指针,这是一种通过物理地址直接操作内存的变量。
Ⅱ C语言编程环境的软件环境和硬件环境是什么
主要是软件,硬件的话,基本上所有的笔记本都能带得懂。
操作系统windows。
编程软件,这个是重点,有VC 2006,vs2008 ,vs2010,主要是用着几款。你可以从网上去下载。如果你单纯用C的话,建议使用VC 2006。
别忘记了,还可以从网上下载编程助手软件,对你编程帮助非常大。
其他的没什么了。
Ⅲ C语言是如何控制硬件的
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.
Ⅳ 都说C语言可以直接操作硬件
不能。
首先,C语言不能够直接对硬件进行操作。从本质上来说,连汇编语言都不可以。只有机器语言能够直接操作硬件。
其次,C语言要操作硬件是必须经过一系列的编译转换。最终它会成为0101的机械码,这个时候它根本不是我们所能够理解的C语言了。
以GCC编译器为例,这个可以分为四步。
第一步是预处理,包括语法检查等工作。
gcc -P abc.c
第二步由源程序生产汇编语言代码。
gcc -S abc.c
会生成abc.s文件,这个文件里就是汇编代码。
第三步编译器生成目标代码,一个源文件生成一个目标代码。
gcc -c abc.c
会生成abc.o
第四步连接器从目标代码生成可执行文件。
gcc abc.o
最后,相对来说,C语言在高级语言当中是最贴近物理层面的语言。它也被称作高级语言里面的低级语言。因为它很多方面都非常贴近硬件。典型的就是指针,这是一种通过物理地址直接操作内存的变量。
Ⅳ C语言有什么优点什么缺点有什么特别之处
优点1. 简洁紧凑、灵活方便C语言一共只有32个关键字,9种控制语句,程序书写形式自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。 C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。2. 运算符丰富C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。3. 数据结构丰富C语言的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能,支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。4. C是结构式语言结构式语言的显着特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。5. C语法限制不太严格,程序设计自由度大虽然C语言也是强类型语言,但它的语法比较灵活,允许程序编写者有较大的自由度。6. C语言允许直接访问物理地址,可以直接对硬件进行操作由于C语言允许直接访问物理地址,可以直接对硬件进行操作,因此它既具有高级语言的功能,又具有低级语言的许多功能,能够像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可用来写系统软件。7. 生成目标代码质量高,程序执行效率高一般只比汇编程序生成的目标代码效率低10へ20%。8. C语言适用范围大,可移植性好C语言有一个突出的优点就是适合于多种操作系统,如DOS、UNIX;也适用于多种机型。C语言具有强大的绘图能力,可移植性好,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画,它也是数值计算的高级语言。
缺点1. C语言的缺点主要表现在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷,这也是C和C++的一大区别。2. C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。[C语言指针]指针是C语言的一大特色,可以说是C语言优于其它高级语言的一个重要原因。就是因为它有指针,可以直接进行靠近硬件的操作,但是C的指针操作也给它带来了很多不安全的因素。C++在这方面做了很好的改进,在保留了指针操作的同时又增强了安全性。Java取消了指针操作,提高了安全性,适合初学者使用。
特别的地方:C是贴近硬件的语言,所以很高效,所以是操作系统编写的不二选择,很多语言的核心都是C写的,所以,你可以不学C语言,但是C语言无处不在。
Ⅵ c语言对硬件 操作系统等底层的东西都有什么
C语言属于结构化高级编程语言,它不会直接对硬件进行操作,如果你学过软件编译原理,你该知道高级语言代码编译的过程就是把它转化成机器语言的过程。对于操作系统,操作系统说白了就是一套软件罢了,它提供了很多接口,C语言各种语言都可以调用操作系统的接口来进行一些操作。
Ⅶ c语言运行的软硬件条件都需要什么裸机上可以吗
你的问题问的太泛泛了。c语言的运行环境可以是没有操作系统的计算机(包括嵌入式设备、单片机),也可以包含有操作系统。具体需要什么要的运行条件需要根据c语言所编写的软件的情况而定。所以:c语言编写的程序可以在裸机上运行,也可以不在裸机上运行。但是一般来说,不能在裸机上运行,需要操作系统、支持库的支撑下才能运行。
知道2008年度盘点 moyangjia 的回答太过于笼统了,c语言可以在没有操作系统的环境下运行,比如单片机上没有操作系统,但是由c语言所产生的应用程序依然可以运行。因此,他的回答是错误的。
Ⅷ 怎么用C语言编程来控制硬件如何写啊
计算机中应用层软件是不需要直接来控制硬件的,硬件的控件一般都是交给硬件驱动程序来直接控件,应用层通过调用硬件驱动来间接的控制硬件,到单片机编程中,由于没有操作系统,所有的才要直接控制硬件,看看C51单片机编程,都是跟硬件打交道的