CPU运行程序的时候,是从FLASH读指令, 并且去执行指令。
内存是CPU可以去读可以去写。
变量必然在内存中。
Volatile:是易变的。写上Volatile是告诉编译器这是可变的,防止编译的时候变量被优化掉。
作为全局变量,可以在MAP中进行查看分配的地址:
Int 是4字节。
Buf是100字节。
int *p ;
Char *p2 ; // 也是占4个字节
有个问题?常量保存在哪里?
一般加上const 是常量,可以放在FLASH中,不放在内存找中了,节省内存。
BSS段是什么?
测试内存大小: 放入变量名
Volatile : 不能编译器自作主张去优化它。
Int i ; 必然在内存中。
变量不加Volatile ,程序会运行的非常快。
加上Volatile ,每一次就需要将变量写到内存中,加上1,再读到CPU中。
但是对于寄存器,必须加上volitile:
Const: 不想被人改变的数值
一般加上const 是常量,可以放在FLASH中,不放在内存找中了,节省内存。
Static:
在单个.c文件中去定义变量,不会影响到别的文件。即使别的文件中定义了相同的变量名。
如果不加,就变成了整个文件都可以用它。
Extern: 外部的别的文件中定于的。
两种方法都可以使用。
直接定义Int :就是全局变量的意思,作用范围是整个程序。如果哪一个程序不用他,加上static。