大话嵌入式之一---变量


动态变量也就是很多书中提到的局部变量,是函数运行过程中申请的,生命周期随着函数的开始而诞生,随着函数的结束而消亡;是动态存在的。程序分配栈空间给局部变量使用;由于程序或者任务的栈空间的大小限制,所以不建议在函数中申请大量的局部变量,如大空间的数组;

静态变量,可以包含有局部静态变量用static修饰和全局变量,这种变量一旦定义不会消亡,和函数的生命周期无关;两种静态变量只是作用范围不一样,局部静态变量只为某个函数服务,而全局变量为整个工程里的所有函数服务;因此也有书本会说static会定义变量的作用域。程序分配堆空间给静态变量使用。静态变量的空间申请有两种方式,一种是普通的定义方式由编译器自行分配,还有一种通过malloc的方式,malloc会以void *的方式返回分配空间的首地址。为什么会以void *的方式返回,主要是因为void *可以接收任何类型的指针变量,在使用时只需要进行强制类型转换就可以。使得程序在编写时不需要考虑类型匹配的问题;malloc的方式分配后,由于是静态变量,因此程序结束不会消除,必须要通过free释放申请的空间,由于堆空间也是有限的,因此malloc后,需要在功能结束的位置执行free;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章