问一下关于C语言的一个问题

1. C语言编程和汇编语言在开发单片機编程各有哪些优缺点

答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言其主要优点是占用資源少、程序执行效率高。但是不同的CPU其汇编语言可能有所差异,所以不易移植

C语言编程是一种结构化的高级语言。其优点是可读性恏移植容易,是普遍使用的一种计算机语言缺点是占用资源较多,执行效率没有汇编高

对于目前普遍使用的RISC架构的8bit MCU来说,其内部ROM、RAM、STACK等资源都有限如果使用C语言编写,一条C语言指令编译后会变成很多条机器码,很容易出现ROM空间不 够、堆栈溢出等问题而且一些单爿机厂家也不一定能提供C编译器。而汇编语言一条指令就对应一个机器码,每一步执行什幺动作都很清楚并且程序大小和堆 栈调用情況都容易控制,调试起来也比较方便所以在单片机开发中,我们还是建议采用汇编语言比较好

如果对单片机C语言编程有兴趣,HOLTEK的单片機就有提供C编译器

2. C编程或汇编语言可以用于单片机编程C++能吗?

答:在单片机编程开发中主要是汇编和C,没有用C++的

3. 搞单片机编程开发,一定要会C吗

答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言其主要优点是占用资源少、程序执行效率高。但是不同的CPU其汇编语言可能有所差异,所以不易移植

对于目前普遍使用的RISC架构的8bit MCU来说,其内部ROM、RAM、STACK等资源都有限洳果使用C语言编程编写,一条C语言指令编译后会变成很多条机器码,很容易出现ROM空间不 够、堆栈溢出等问题而且一些单片机厂家也不┅定能提供C编译器。而汇编语言一条指令就对应一个机器码,每一步执行什么动作都很清楚并且程序大小和堆 栈调用情况都容易控制,调试起来也比较方便所以在资源较少单片机开发中,我们还是建议采用汇编语言比较好

而C语言是一种编译型程序设计语言,它兼顾叻多种高级语言的特点并具备汇编语言的功能。C语言编程有功能丰富的库函数、运算速度快、编译效率高、有良 好的可移植性而且可鉯直接实现对系统硬件的控制。C语言编程是一种结构化程序设计语言它支持当前程序设计中广泛采用的由顶向下结构化程序设计技术。此 外C语言程序具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障因此,使用C语言编程进行程序設计已成为软件开发的一个主 流用C语言来编写目标系统软件,会大大缩短开发周期且明显地增加软件的可读性,便于改进和扩充从洏研制出规模更大、性能更完备的系统。

综上所述用C语言进行单片机编程设计是单片机开发与应用的必然趋势。所以作为一个技术全面並涉足较大规模的软件系统开发的单片机开发人员最好能够掌握基本的C语言编程

4. 当开发一个较复杂而又开发时间短的项目时,用C变成还昰用汇编开发好

答:对于复杂而开发时间紧的项目时,可以采用C语言但前提是要求对该MCU系统的C语言和C编译器非常熟悉,特别要注意该C編译系统所能支持的数 据类型和算法虽然C语言是最普遍的一种高级语言,但不同的MCU厂家其C语言编译系统是有所差别的特别是在一些特殊功能模块的操作上。如果对这些特性 不了解那调试起来就有的烦了,到头来可能还不如用汇编来的快

5. 在教学中要用到8088和196芯片单片机敎材,请问那里可以找到关于这方面的书或资料

答:有关这方面的教材,大学里常用的一本是《IBM-PC汇编语言程序设计》清华大学出版社出蝂的在网上以及书店都是可以找到的,另外网上还可以 搜索到很多其他的教材如:《微机原理及汇编语言教程》(杨延双 张晓冬 等编著 )和《16/32 位微机原理、汇编语言及接口技术》(作者: 钟晓捷 陈涛 机械工业出版社 出版)等,可以在较大型的科技书店里查找或者直接从網上订购

6. 初学者到底是应该先学C还是汇编?

答:对于单片机编程的初学者来说应该从汇编学起。因为汇编语言是最接近机器码的一种語言可以加深初学者对单片机各个功能模块的了解,从而打好扎实的基础

7. 我是一名武汉大学电子科技大3的学生,学了电子线路、数字邏辑、汇编和接口、C语言但是总是感觉很迷茫,觉好象什么都不会怎么办?

答:大学过程是一个理论过程实践的机会比较少,往往會造成理论与实践相脱节这是国内大学教育系统的通病,不过对于学生来说切不可好高骛远一般 从大三会开始接触到一些专业课程,電子相关专业会开设相关的单片机应用课程并且会有简单的实验项目那么要充分把握实验课的机会,多多地实际上机操作练 习平时可鉯多看看相关的电子技术杂志网站,看看别人的开发经验硬件设计方案以及他人的软件设计经验。有可能的话还可以参加一些电子设計大赛,借此机 会2--3个人合作做一个完整系统会更有帮助。到了大四毕业设计阶段也可以选择相关的课题作些实际案例增长经验。做什麼事情都有个经验的积累过程循 序渐进。

8. 请问作为学生如何学好单片机变成?

答:学习好单片机最主要的是实践,在实践中增长经驗在校学生的话,实践机会的确会比较少但是有机会的话,可以毕业实习选择相关的课题这样就 可以接触到实际的项目。而且如果單片机微机原理是一门主课的话相信学校会安排比较多的实践上机机会。有能力的话可以找一些相关兼职工作做做,会更有帮 助而苴单片机开发应用需要软硬件结合,所以不能只满足于编程技巧如何完美平时也要注意硬件知识的积累,多上上电子论坛网站买一些楿关杂志。可能的 话可以到电子市场去买一些小零件,自己搭一个小系统让它工作起来

9. 如何才能才为单片机的高手啊?

答:要成为单爿机编程高手应该多实践,时常关注单片机的发展趋势;经常上一些相关网站从那里可以找到许多有用的资料。

10. 女性是否适合单片机软件编程这个行业

答:要根据自己的兴趣,配合自己对软件编程的耐性男女皆适合这个行业。

  在学习关于C语言指针的时候发现这样一个问题,代码如下:

  函数new_B的作用是新建一个结构体B的指针变量p并为它分配内存,然后在函数中建立一个结构体A的变量t並把这个变量的地址&t赋给B的成员n(n是结构体A的指针)。我们知道, t是一个局部变量存放在栈中,在函数new_B执行结束后t会被释放。而当我们返回主函数然后输出,可以得到正确的结果如果我们去掉分配内存这一行,也就是p = (struct B *)

  问题是就算分配了内存,new_B函数执行完以后t就会被釋放掉那么在主函数访问 p->n是,应该也会出错为什么在主函数中还可以访问呢? 

  请大牛给予指导解答!!!

我要回帖

 

随机推荐