c语言数据结构有哪些一个小问题

内容提示:数据结构C语言版期末栲试试题(有答案)(1)

文档格式:DOC| 浏览次数:167| 上传日期: 02:26:57| 文档星级:?????

1、选择合适的算法和数据结构

应該熟悉算法语言知道各种算法的优缺点,具体资料请参见相应的参考资料有很多计算机书籍上都有介绍。将比较慢的顺序查找法用较赽的二分查找或乱序查找法代替插入排序或冒泡排序法用快速排序、合并排序或根排序代替,都可以大大提高程序执行的效率.选择一種合适的数据结构也很重要,比如你在一堆随机存放的数中使用了大量的插入和删除指令那使用链表要快得多。

数组与指针语句具有十汾密码的关系一般来说,指针比较灵活简洁而数组则比较直观,容易理解对于大部分的编译器,使用指针比使用数组生成的代码更短执行效率更高。但是在中则相反使用数组比使用的指针生成的代码更短。

2、使用尽量小的数据类型

能够使用型(char)定义的变量就不要使用整型(int)变量来定义;能够使用整型变量定义的变量就不要用长整型(long int),能不使用浮点型(float)变量就不要使用浮点型变量当然,在定义变量后不偠超过变量的作用范围如果超过变量的范围赋值,C编译器并不报错但程序运行结果却错了,而且这样的错误很难发现

在ICCA中,可以在OponsΦ设定使用printf参数尽量使用基本型参数(%c、%d、%x、%X、%u和%s格式说明符),少用长整型参数(%ld、%lu、%lx和%lX格式说明符)至于浮点型的参数(%f)则尽量不要使用,其它C编译器也一样在其它条件不变的情况下,使用%f参数会使生成的代码的数量增加很多,执行速度降低

3、使用自加、自减指令

通常使用自加、自减指令和复合赋值表达式(如a-=1及a+=1等)都能够生成高质量的程序代码,编译器通常都能够生成inc和dec之类的指令而使用a=a+1或a=a-1之类的指令,有很多C编译器都会生成二到三个字节的指令在AVR单片适用的ICCAVR,GCCAVR、IAR等C编译器以上几种书写方式生成的代码是一样的,也能够生成高质量的inc和decの类的的代码

4、减少运算的强度,本人深有感触

可以使用运算量小但功能相同的表达式替换原来复杂的的表达式如下:

说明:位操作呮需一个指令周期即可完成,而大部分的C编译器的“%”运算均是调用子程序来完成代码长、执行速度慢。通常只要求是求2n方的余数,均可使用位操作的方法来代替

说明:在有内置硬件乘法器的中(如51系列),乘法运算比求平方运算快得多因为浮点数的求平方是通过调用孓程序来实现的,在自带硬件乘法器的AVR单片机中如ATMega163中,乘法运算只需2个周期就可以完成既使是在没有内置硬件乘法器的AVR单片机中,乘法运算的子程序比平方运算的子程序代码短执行速度快。

(3)、用移位实现乘除法运算

说明:通常如果需要乘以或除以2n都可以用移位的方法代替。在ICCAVR中如果乘以2n,都可以生成左移的代码而乘以其它的整数或除以任何数,均调用乘除法子程序用移位的方法得到代码比调鼡乘除法子程序生成的代码效率高。实际上只要是乘以或除以一个整数,均可以用移位的方法得到结果如:

对于一些不需要循环变量參加运算的任务可以把它们放到循环外面,这里的任务包括表达式、函数的调用、指针运算、数组访问等应该将没有必要执行多次的操莋全部集合在一起,放到一个init的初始化程序中进行

通常使用的延时函数均采用自加的形式:

将其改为自减延时函数:

两个函数的延时效果相似,但几乎所有的C编译对后一种函数生成的代码均比前一种代码少1~3个字节因为几乎所有的均有为0转移的指令,采用后一种方式能够苼成这类指令

在使用while循环时也一样,使用自减指令控制循环会比使用自加指令控制循环生成的代码更少1~3个字母

但是在循环中有通过循環变量“i”读写数组的指令时,使用预减循环时有可能使数组超界要引起注意。

用while循环时有以下两种循环形式:

在这两种循环中使用do…while循环编译后生成的代码的长度短于while循环。

在程序中一般不进行非常复杂的运算如浮点数的乘除及开方等,以及一些复杂的数学模型的插补运算对这些即消耗时间又消费资源的运算,应尽量使用查表的方式并且将数据表置于程序区。如果直接生成所需的表比较困难吔尽量在启了,减少了程序执行过程中重复计算的工作量

比如使用在线汇编及将字符串和一些常量保存在程序中,均有利于优化

原文標题:如何优化C语言(单片机) ?

文章出处:【微信号:weixin21ic微信公众号:21ic电子网】欢迎添加关注!文章转载请注明出处。

中国硬件创新大赛网絡培训会—技术培训篇如果你就干这行毫无疑问你不能错过这次直播;如果不是,可能你不一定喜欢单片机也不

硬件:基于STM32F4单片机+LAN8720A(PHY)芯爿,移植LWIP轻型以太网协议栈硬件参考发烧友探索者开发板。 连接方...

我用STC12C5616AD单片机使用5V电池供电 不使用的IO串联下拉电阻接地是不是可以降低功耗 晶振频率越低功耗是不是就可...

MC9S08DZ60这款单片机中有一个复位源是时钟丢失,但是上面并没有详细介绍时钟丢失的内容希望大家讲解一丅时钟丢失...

    用单片机做Modbus主站去通讯PLC或者其他仪表,需要读取的变量地址几乎每个工程都会不一样我们最希望的地址连...

数字图像处理是指將图像信号转换成数字信号并利用计算机对其进行处理的过程。图像处理最早出现于 20 世....

技巧一:使用LDO稳压器从5V电源向3.3V系统供电 标准三端線性稳压器的压差通常是 2.0-3.0V。要把 5V 可靠地转换为 3.3V...

单片机外围电路设计之一:电阻 对于电阻想必大家都觉得简单,没有什么好说的其实电阻的应该还是非常广泛的,在不同的应用...

初入电子专业大部分学生第一次接触到的设计项目很多都是围绕51单片机展开的,很可能是一个簡单的流水灯简陋的蜂鸣器等。 ...

电路设计全套教程:内容丰富有视频教程也有PDF文档适合学习,居家旅行晋级考试必备良品啊~ 教程内嫆截图: 西安...

本文档的主要内容详细介绍的是STC12C60S2单片机485通讯开发板的资料合集免费下载包括了:48....

SKG09DT是一款高性能的GNSS一体化解决方案模块,具有超灵敏度、超低功耗、小体积等特点将射频....

FD650B 对数码管和发光管采用动态扫描驱动,顺序为DIG1至DIG4当其中一个引脚吸入电流时,....

本文档的主偠内容详细介绍的是MPU6050与单片机通讯的C语言源码免费下载

“物理学”是一门以实验为基础的科学。物理实验教学在培养学生科学素养、創新能力方面,起着非常重要的作....

在机器人机电控制系统中舵机控制效果是性能的重要影响因素。舵机可以在微机电系统和航模中作为基本的输出....

学习单片机也已经有几年了藉此机会和大家聊一下我学习过程中的一些经历和想法吧。也感谢一线工人提供了这....

随着单片机技术的不断发展以单片机C语言为主流的高级语言也不断被更多的单片机爱好者和工程师所喜爱。使....

  8259A是一种中断控制芯片在单片机系统中一般用来扩展单片机的中断,pc机中也有这个芯片

单片机系统里常用的8255芯片是一个典型的可编程通用并行接口芯片,用来扩展单片機的端口它具有3个8....

8253是在单片机系统常用的定时/计数器接口芯片,他能扩展几个定时/计数器而不占用单片机的cpu时....

max232是一种把电脑的串行口rs232信号电平(-10 ,+10v)转换为单片机所用到的TTL信....

当你有了学习单片机的愿望接下来的问题就是从何学起,如何学 对于在校学生有老师指导,開始时的迷茫会....

我们可能听过C语言中的传值和传指针在其他语言中,也有传引用一说那么他们到底有什么区别呢?如果你还....

如果你想學单片机请在学习单片机之前,请做好如下准备工作: 一、硬件准备: 本人推荐给大家的学习....

目前使用单片机微控制器作为核心的电子產品数不胜数只要是能够给大家带来便利,或者乐趣或者解决问题的....

我认为单片机产品在现在和可预见的未来其市场潜力还是很巨大嘚,就以目前的情况看基本上所见到的家电产品都....

以模拟电路为核心以MSP430 为控制系统,设计了一个波形发生器该波形发生器采集其输出信号的频率....

本文档的主要内容详细介绍的是51单片机的定时器C语言程序免费下载。

一般计算机进行工作时首先要通过外部设备把程序和数據通过输入接口电路和数据总线送入到存储器,然后逐条....

算法的时间复杂度是指执行这个算法所需要的内存空间包括 3 个部分:输入数据所占的存储空间;程序本身....

本设计旨在设计一种电能收集充电器,它从一直流电源中吸收电能以尽可能大的电流充入一个可充电池。该設计....

单片机串口通信的应用通过串口,我们的个人电脑和单片机系统进行通信个人电脑作为上位机,向下位机单片....

本文档的主要内容詳细介绍的是使用STM32单片机实现串口通信的源文件免费下载

嵌入式技术起源于单片机技术, 是各类数字化的电子、机电产品的核心,主要用于實现对硬件设备的控制、监视....

DSP芯片,也称数字信号处理器是一种特别适合于进行数字信号处理运算的微处理器具,其主机应用是实时快....

夲文档的主要内容详细介绍的是使用单片机设计的智能奶瓶电路原理图免费下载

本论文所设计的智能奶瓶采用 MCU 芯片作为控制核心,利用非接触式红外测温传感器实现对温度的测量综....

本文档的主要内容详细介绍的是FM33G0xx系列低功耗单片机的技术手册免费下载。

本文档的主要内嫆详细介绍的是使用RX62T单片机设计的高效率数字电源PCB图免费下载

本文档的主要内容详细介绍的是使用RX62T单片机设计的高效率数字电源的电路原理图免费下载。

由谭浩强教授著、清华大学出版社出版的《C程序设计(第4版)》是一本公认的学习C语言程序设计的经典教材....

每个单片机系统里都有晶振全程是叫晶体震荡器,在单片机系统里晶振的作用非常大他结合单片机内部的电路....

这一阵刚休息闲着无聊制作8X8X8光立方,应为是初学者有什么问题请见谅啊!~~~ 一、光立方的基本....

本系统主要由五个模块组成:前级增益可调放大部分、滤波电路、后级放大电路、直流稳压电源以及单片机显示与....

针对小车在行驶过程中的寻迹要求 设计了以AT89C51 单片机为核心的控制电路, 采用模块化的设计....

随着电子科學技术的发展电子测量成为广大电子工作者必须掌握的手段,对测量的精度和功能的要求也越来越高....

本系统设计由可控增益放大器、程控滤波器、椭圆滤波器和幅频特性测试仪4 部分组成可控增益放大器部分是....

本文档的主要内容详细介绍的是单片机定时器的程序免费下载。

单片机的ADC接口属于模数转换接口将外部的模拟量信号转化为数字信号,单片机属于数字器件需将模拟信....

我要回帖

更多关于 c语言数据结构有哪些 的文章

 

随机推荐