您的位置 首页 厂商

单片机C语言中 static 用法小结

一、c程序存储空间布局C程序一般由下列部分组成:1)正文段——CPU执行的机器指令部分;少量的液晶字库等也放在这里;只读,防止程序由于意…

一、c程序存储空间布局

C程序一般由下列部分组成:

1)正文段——CPU履行的机器指令部分;少数的液晶字库等也放在这儿;只读,避免程序因为意外事故而修正本身指令;
2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,寄存在这儿。
3)非初始化数据段(bss段)——在程序中没有初始化的全局变量;内核将此段初始化为0。
4)栈——增加方向:自顶向下增加;主动变量以及每次函数调用时所需求保存的信息(回来地址;环境信息)。
5)堆——动态存储分。

|———–|
| |
|———–|
| 栈 |
|———–|
| | |
| |/ |
| |
| /| |
| | |
|———–|
| 堆 |
|———–|
| 未初始化 |
|———–|
| 初始化 |
|———–|
| 正文段 |
|———–|

二、static的效果
1、内部标识,也便是说无论是界说函数仍是变量,只需有了static,就不能被外部调用;
举例说明:static char i = 0;
static int putchar(int c );
{
static char a = 0;
….a++;…..

}
extern sprintf(const char *format , … );
{
putchar(…);
}
假定以上变量及函数都在uart.c的文件中main()函数是在main.c中,那么,在main中只能调用sprintf,而不能直接调用putchar,也不能直接用变量 i。

2、静态变量,我以为这个是针对于static界说的部分变量而言的,除了只能在界说它的函数内部分运用外其他的和全局变量是相同的(只在第一次调用时初始化,用完后空间不会开释,已存值不会改动)。比方说以上的a在第一次调用时被初始化为0.然后自加为1,那么第2次调用时(无论谁调用)a的初始值便是1,运转完便是2。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/266899.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部