--static将变量存储于全局数据区,默认值为0 --auto将变量存储在栈空间,默认初始化为随机值(auto int num ,等价于int num) --register将变量存储于寄存器,默认初始化为随机值
static:静态存储类别,用于定义全局变量或局部变量,表示变量在程序运行期间一直存在,初始值为0或常量表达式。extern:外部存储类别,用于声明在其他文件中定义的全局变量,表示变量可以在多个文件中共享,初始值由定义时指定。register:寄存器存储类别,用于定义局部变量,表示变量尽可能存储在寄存器中,以提高访问速度,初...
Data 段:存储已经初始化的常量数据,只读 Text 段:存储的是代码本身,只读 栈 当调用一个函数时,系统会自动为参数当局部变量,push 进栈中,当函数调用结束时,会自动提升栈。 (可查看汇编中的函数调用机制) 栈的空间是有限的,因此不要在函数里创建太大的数组。 linux 查看栈的大小 ulimit -s static 变量或函数 ...
1test.c2//假设它们都是可以访问的3externintl_count;4externintg_count;5externvoidutil_func(intvalue);6voidtest_func(void)7{8#if09l_count++;//访问l_count静态局部变量,编译报错10g_count++;//访问g_count静态全局变量,编译报错11util_func(100);//调用main.c中的static函数,编译报错12#endif13} 当...
const initialization的变量(已经初始化为非0的静态变量)保存在.data段。 // 静态初始化 - 编译时初始化 // zero initialization intglobalVar1;// 初始化为0,存储在.bss段 constintconstVar =42;// 初始化为42,存储在.data段 voidfoo(){ staticintlocalVar =10;// 局部静态变量,初始化为10,存储在.bss...
static int fun2(char c); //内部链接,对外不可见 2) 修饰全局变量 我们知道,全局变量存储在静态存储区,但是它不是静态变量,它的作用范围从定义处到所在源文件末尾。但是它对其它源文件都是有效的,只需要通过extern声明一下即可,详见作者的另一篇文章《说一说C语言中的变量存储类型——“extern”》...
C语言static静态变量(附带示例)C语言静态类型的变量占用静态存储区,用 static 关键字来说明。其一般形式如下。 static 类型 变量名; 例如: static int a; 静态类型又分为静态局部变量和静态全局变量。C 语言规定静态局部变量有默认值,int 型等于 0,float 型等于 0.0,char 型为 '\0',静态全局变量也如此。而...
C语言变量存储方式包括: auto(自动变量),static(静态变量),register(寄存器变量),extern(外部变量) auto(自动变量): 在函数定义的变量,默认情况下为自动比哪里。在调用函数时,系统会“自动”的给变量分配内存空间,在函数调用完成后会“自动”的释放这些内存空间。
例如,在上例文件filel.c中,如果作这样的定义: static int a: 则变量a的作用域被缩小至本程序文件filel.c,文件file2.c中不能引用。 值得注意的是对全局变量加static,定义为静态存储方式,并不意味着是静态存储;而不加static,是动态存储。两种形式的全局变量(外部变量)都是静态存储方式,都是编译时分配存储空间,...