- 概要
- 先说结论
- 代码
- 执行结果
在kendryte k210上实验探究未初始化的全局变量,未初始化的静态全局变量,初始化的全局变量,初始化的静态全局变量,未初始化的静态局部变量,初始化的静态局部变量所存在的段。
先说结论直接看表格
| 全局变量 | 全局静态变量 | 局部静态变量 | |
|---|---|---|---|
| 初始化 | .data | .data | .data |
| 未初始化 | .bss | .bss | .bss |
#include执行结果#include #include "sleep.h" #define name(x) #x extern unsigned int _bss; extern unsigned int _ebss; extern unsigned int _data; extern unsigned int _edata; int x; int y = 1; int z; static int b; static int c = 1; void printSection(void *a, char str[100]) { if (a > (void *)&_bss && a < (void *)&_ebss) { printf("%s locate in bssn", str); } else if (a > (void *)&_data && a < (void *)&_edata) { printf("%s locate in datan", str); } else { printf("%s locate in other sectionn", str); } } void static_test() { static int d; static int e = 1; printf("static variable testn"); printSection(&b, name(b)); printSection(&c, name(c)); printSection(&d, name(d)); printSection(&e, name(e)); } int main(void) { z = 2; printf("normal variable testn"); printSection(&x, name(x)); printSection(&y, name(y)); printSection(&z, name(z)); static_test(); while (1) { msleep(3000); } return 0; }
normal variable test x locate in bss y locate in data z locate in bss static variable test b locate in bss c locate in data d locate in bss e locate in data



