auto:自动存储类别,用于定义局部变量,表示变量在函数内部自动创建和销毁,初始值为随机值。static:静态存储类别,用于定义全局变量或局部变量,表示变量在程序运行期间一直存在,初始值为0或常量表达式。extern:外部存储类别,用于声明在其他文件中定义的全局变量,表示变量可以在多个文件中共享,初始值由定义时指定。reg...
其实static还可以用来修饰局部变量,这个在《变量类型》中说过,不再阐述了。 * 因为main.c已经没有权限访问test.c中的变量a了,所以下面的写法是错误的: 和 extern是用来声明已经定义过而且能够访问的变量,虽然test.c中有定义过变量a,但是test.c中变量a的作用域是只限于test.c文件,main.c没有访问权限,所以main....
static和extern不仅可以用在变量上,还可以用在函数上。这讲先介绍它们对函数的作用。 一、extern与函数 之前我提到过一句话:如果一个程序中有多个源文件(.c),编译成功会生成对应的多个目标文件(.obj),这些目标文件还不能单独运行,因为这些目标文件之间可能会有关联,比如a.obj可能会调用c.obj中定义的一个函数。将...
下面是C语言中static和extern的'区别,一起来学习下吧: static: 一、在C中,static主要定义全局静态变量、定义局部静态变量、定义静态函数。 1、定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量。全局静态变量有以下特点。 a.在全局区分配内存。 b.如果没有初始化,其默认值为0. c....
C++中static,extern和extern "C"关键字 1. extern 变量 extern 表明该变量在别的地方已经定义过了,在这里要使用那个变量。 当extern不与"C"在一起修饰变量或函数时,如在头文件中: extern int g_Int; 它的作用就是声明函数或全局变量的作用范围的关键字,其声明的函数和变量可以在本模块活其他模块中使用,记住...
(1)静态局部变量只在编译时赋值,即只在编译时执行“static int a = 1 ” 这句代码一次,无论运行期间调用这句代码所在的函数多少次,前提是必须在定义的同时赋值;而自动局部变量,没调用一次就执行定义赋值一次。 如下代码: (2)使用静态存储要多占内存,降低程序可读性,不要过多使用。
**/voidsum(){//没有使用static修饰intnum =0; printf("num = %d\n",num);//0num++; }voidsum1(){//static 可以修饰局部变量//作用:1)static定义的变量的作用域会得到延长//2) static定义变量的语句只会被执行一次staticintnum =0; printf("num = %d\n",num);//0num++; ...
上一篇文章介绍了static和extern对函数的作用,static用来定义一个内部函数,不允许其他文件访问;extern用来定义和声明一个外部函数,允许其他文件访问。static和extern对变量也有作用,不过跟函数有点差别。 C语言和Java都有全局变量的概念,但是它们的用法还是有些差别的。
1.extern可以用来声明一个全局变量,但是不能用来定义变量 2.默认情况下,一个全局变量是可以供多个源文件共享的,也就说,多个源文件中同名的全局变量都代表着同一个变量 3.如果在定义全局变量的时候加上static关键字,此时static的作用在于限制该全局变量的作用域,只能在定义该全局变量的文件中才能使用,跟其他源文件中...
1、static关键字是C, C+中都存在的关键字, 它主要有三种使用方式, 其中前两种只指在C语言中使用, 第三种在C+中使用(C,C+中具体细微操作不尽相同, 本文以C+为准.(1局部静态变量(2外部静态变量/函数(3静态数据成员/成员函数下面就这三种使用方式及注意事项分别说明一、局部静态变量在C/C+中, 局部变量按照...