原标题:嵌入式系统C语言重点语法const、volatile、static、堆栈等的意义及用法

在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。

要点:堆,队列优先,先进先出(FIFO—first in first out) 。 栈,先进后出(FILO—First-In/Last-Out)。

const:

const修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的。

const关键字的作用主要有以下几点:

(1)可以定义const常量,具有不可变性。 例如:

const int Max=100; int Array[Max];

(2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。例如: void f(const int i) { ………} 编译器就会知道i是一个常量,不允许修改;

(3)可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。

(4)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。 还是上面的例子,如果在函数体内修改了i,编译器就会报错; 例如:

void f(const int i) { i=10;//error! } 1

(5) 为函数重载提供了一个参考。

class A { ......

void f(int i) {......} //一个函数

void f(int i) const {......} //上一个函数的重载 ......

}; 1234

(6) 可以节省空间,避免不必要的内存分配。 例如:

#define PI 3.14159 //常量宏

const doulbe Pi=3.14159; //此时并未将Pi放入ROM中 ......

double i=Pi; //此时为Pi分配内存,以后不再分配!

double I=PI; //编译期间进行宏替换,分配内存

double j=Pi; //没有内存分配

double J=PI; //再进行宏替换,又一次分配内存! 123456

const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是象#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝。

(7) 提高了效率。 编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。

本文章来源网络,如果原作者不支持咱们转发,请联系删除,谢谢!

技术源于积累,成功来自执着返回搜狐,查看更多

责任编辑:

c语言static. volatile,嵌入式系统C语言重点语法const、volatile、static、堆栈等的意义及用法...相关推荐

  1. 嵌入式C语言编程课件,嵌入式系统C语言编程基础PPT课件

    <嵌入式系统C语言编程基础PPT课件>由会员分享,可在线阅读,更多相关<嵌入式系统C语言编程基础PPT课件(81页珍藏版)>请在人人文库网上搜索. 1.嵌入式系统C语言编程基础 ...

  2. 用C语言实现高效嵌入式系统编程

    1引言     随着市场竞争的日趋激烈,要求电子工程师能够在短时间内编写出执行效率高而又可靠的嵌入式系统的执行代码.同时,由于实际系统的日趋复杂,要求所写的代码规范.模块化并便于多个工程师以软件工程的 ...

  3. c语言作业系统输出超限,C语言网Online Judge系统支持语言和编译说明

    Online Judge系统支持语言和编译情况: 语言 编译器 语言版本 编译参数 C gcc 4.6.3 C99 gcc Main.c -o Main -Wall -lm –static -std= ...

  4. 嵌入式系统期末复习重点-西北大学(欧阳老师给的)

    第一章 嵌入式系统概论 嵌入式系统的定义 嵌入式系统是以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能.可靠性.成本.体积.功耗严格要求的专用计算机系统.它具有自主的信息处理能力. ...

  5. 嵌入式系统C语言编程基础

    文章目录 Q1:所有嵌入式系统的主流程最后都进入一个死循环,怎样用C语言实现─个死循环? A1 Q2:while(){...}和do{....}while()有什么区别? A2 Q3:用变量a给出下列 ...

  6. c语言p1-melepeo,学生选课系统c语言程序代码

    学生选课系统c语言程序代码 (25页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.90 积分 #include #includestruct cou ...

  7. 成绩查询系统c语言,学生成绩查询系统C语言代码(分服务器端和客户端).doc

    学生成绩查询系统C语言代码(分服务器端和客户端) 客户端:#include#include#include #pragma comment(lib , "Wsock32.lib " ...

  8. c语言的学生理系统,C语言学习系统的教程

    完美者(wmzhe.com)网站以软件下载为基础,改版后的网站对功能性板块进行扩充,以期能够解决用户在软件使用过程中遇见的所有问题.网站新增了"软件百科"."锦囊妙技&q ...

  9. c语言程序设计工资纳税系统,C语言程序设计纳税工资系统

    C语言程序设计纳税工资系统 第一章 课程设计目的和要求1.1 课程设计的目的C 语言一直是程序设计语言的主流之一数据类型丰富.齐全.C 语言供了整数.实数.字符.字符串等基本数据类型,还提供数组.指针 ...

最新文章

  1. ACM数学常用知识整理(持续更新ing)
  2. Swift:在Safari中打开App
  3. C#读取与修改XML文档
  4. 【Linux】一步一步学Linux——export命令(211)
  5. 排序算法 c++(思想+code)
  6. 个人生活的量化分析(二):Apple健康数据分析
  7. 论文降重修改句子软件
  8. 移动通信-多径效应,多普勒效应,菲涅尔区,阴影效应,快衰落,慢衰落
  9. 【java导出Word模板(FTL文件,含单元格合并)】
  10. 【CodeChef-LYRC】Music Lyrics【AC自动机】
  11. 问题 H: LZY碎大石
  12. php的link是什么意思,link标签是什么意思?
  13. Introduction to CMake by Example
  14. 陈婉芬老师的精髓金玉良言----相信篇,观念篇
  15. android 6g 有必要吗,手机6g运存有必要吗
  16. Latex 字母上面加符号 波浪线 横线 角号等
  17. 毕业设计 单片机智能药箱系统 - STM32
  18. 网页看视频,加速敢看的技巧
  19. 光谱仪器专题篇(10),光谱仪器之遥感光谱仪故障处理
  20. 电脑提示d3dcompiler_47.dll缺失怎么修复?

热门文章

  1. 学习 LLVM(14) SmallPtrSet
  2. Criteria查询之分页显示数据
  3. 把txt中的数据读出并保存到数组中
  4. matlab imwrite函数保存jpg格式图像丢失数据或改变图像
  5. linux图形化应用程序快捷方式制作方法
  6. linux里grep和egrep,fgrep的区别
  7. linux文件目录分析之/etc目录
  8. linux命令之添加系统搜索动态库目录-ldconfig
  9. SwipeRefreshLayout
  10. [译] Fiber内幕:深入概述React新的协调算法