静态全局变量有以下特点: (1)静态变量都在全局数据区分配内存,包括后面将要提到的静态局部变量; (2)未经初始化的静态全局变量会被程序自动初始化为0(在函数体内声明的自动变量的值是随机的,除非它被显式初始化,而在函数体外被声明的自动变量也会被初始化为0); (3)静态全局变量在声明它的整个文件都是可见的,而...
如果静态局部变量没有初始化的话,整型变量会自动赋值为0,字符串数组会自动赋值为’\0’ C中static修饰全局变量 对于一个全局变量,它既可在本源文件中被访问,也可在同个工程的其他源文件中被访问,使用extern即可(正如最开始的那个例子) file1.c int a = 1; 1. file2.c #include <stdio.h> extern int a...
使用static关键字在全局范围内声明的变量称为静态全局变量。 与普通全局变量相比,静态全局变量的作用域仍然是全局的,但是它们仅限于声明它们的文件内可见。 静态全局变量的生存期也从程序开始到程序结束,存储在全局数据区中。 如果当前文件中包含了定义静态全局变量的头文件,则当前文件可以访问这个静态全局变量 main.c ...
首先是全局静态变量,看这名字就知道,这个变量有两个属性(姑且就称之为属性吧),第一:这个变量是全局的,也就是说这个变量可以在源文件的任何一个函数中使用,并且始终存在。第二:这个函数是静态的,本来嘛,全局变量已经是能够一直存在,你加一个静态属性什么意思?静态,就是说你只能在本文件调用,其他文件调用是不行的...
源文件里建议不要使用局部static变量,尽量使用全局static变量。 inline不要单独使用,前面必须加上static,且声明和实现必须放在一起。 下面开始推导: 为什么头文件里不要出现static变量? 将static变量放到头文件里,想表达的含义或许是所有源文件都能使用同一个静态变量,但这是错误的理解。
这里的 num 就是全局静态变量,而 temp 是局部静态变量,而函数 fun1 和 fun2 在同一文件中,所以变量名必须不同,但是在不同文件下,又可以继续使用 fun1 和 fun2 函数名了。 说完常见的,现在来看看不常见的。 如果在头文件中使用 static 会发生什么情况呢?
头文件中使用 前面三个应该是很常见的,简要说明即可,重要的是后面那一个不常见,作为重点讲解内容。 首先是全局静态变量,看这名字就知道,这个变量有两个属性(姑且就称之为属性吧),第一:这个变量是全局的,也就是说这个变量可以在源文件的任何一个函数中使用,并且始终存在。第二:这个函数是静态的,本来嘛,全局变...
一、在C中,static主要定义全局静态变量、定义局部静态变量、定义静态函数。 1、定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量。全局静态变量有以下特点。 在全局区分配内存。 如果没有初始化,其默认值为0. 该变量在本文件内从定义开始到文件结束可见。
1. extern 变量 extern 表明该变量在别的地方已经定义过了,在这里要使用那个变量。 当extern不与"C"在一起修饰变量或函数时,如在头文件中: extern int g_Int; 它的作用就是声明函数或全局变量的作用范围的关键字,其声明的函数和变量可以在本模块活其他模块中使用,记住它是一个声明不是定义!也就是说B模块(...
全局变量在头文件中只是一个声明,所以不能赋初值,只有真正定义的时候,才可以赋值,所以一般头文件是extern int g; 这种写法的