static和extern修饰局部变量 static修饰局部变量://作用:1)static定义的变量的作用域会得到延长,从程序启动到程序退出,但它并没有改变变量的作用域局部的static实际也是全局的//2) static定义变量的语句只会被执行一次extern是不能够修饰局部变量的 #include <stdio.h>/** **/voidsum(){//没有使用static修饰intn...
如果函数的声明中带有关键字extern,仅仅是暗示这个函数可能在别的源文件里定义,没有其它作用。 extern 和 static (1) extern 表明该变量在别的地方已经定义过了,在这里要使用那个变量. (2) static 表示静态的变量,分配内存的时候, 存储在静态区,不存储在栈上面. static 作用范围是内部连接的关系, 和extern有点...
auto:自动存储类别,用于定义局部变量,表示变量在函数内部自动创建和销毁,初始值为随机值。static:静态存储类别,用于定义全局变量或局部变量,表示变量在程序运行期间一直存在,初始值为0或常量表达式。extern:外部存储类别,用于声明在其他文件中定义的全局变量,表示变量可以在多个文件中共享,初始值由定义时指定。reg...
extern是用来声明已经定义过而且能够访问的变量,虽然test.c中有定义过变量a,但是test.c中变量a的作用域是只限于test.c文件,main.c没有访问权限,所以main.c中的extern是废的。 链接的时候报错:标示符a未定义 除非main.c自己定义一个变量a,这样子extern才是有效的,不过这时候main.c和test.c中的变量a是分别代表...
我们知道,不同类型的变量有不同的存储类型、不同的生命周期、不同的作用域。这讲介绍2个比较重要的关键字:static和extern。static和extern不仅可以用在变量...
static的作用是将标识符的作用域限定在本文件中,并且static 和 extern 不能同时修饰一个变量。我们从上文知道了只有extern是函数的声明,那么所有static修饰的变量都是定义式。 //B.hstaticinty;//定义//B.cpp#include"B.h"//int y = 100; //已经定义过,这样写会报错voidInitY(int&var){var=100;}//Main...
(1) . extern定义的变量,其作用域是整个C语言程序;. extern static定义的变量,其作用域是该定义所在的C程序文件;. auto定义的变量,其作用域是该定义所在的例程;. local static定义的变量,其作用域是该定义所在的例程.且在退出该例程时,该变量的值仍保留.. register定义的变量,其作用域与auto定义的变量一样....
这次加上static,int a没有销毁,所有数会一直加上打印的就是12345 extern是用来访问声明过的外部变量,比如在同一个文件夹中,两个程序要相互联系,要用到另一个程序的变量,在使用时前面加上extern,说明这是从其他程序拿来的变量, 这样就可以直接使用。但记得要在前面加上extern。就好像你向别人借东西,如果不说一声...
static static修饰的全局是内部链接性。 内部链接性的在编译单元间不共享,编译单元你理解成源文件也马马虎虎。 extern extern修饰的全局是共享性的 common.h #pragmaonce#ifndef_TOOL_H_#define_TOOL_H_//int a在这里定义只会重定义//int a = 1;staticintb=3;externintc;//define ABC是不分配内存地址的#de...
2: 1.c int a 2.c extern int a 3: 1.c extern int a 2.c int a static与全局变量 如果在定义全局变量的时候加上static关键字,此时static的作用在于限制该全局变量的作用域, 只能在定义该全局变量的文件中才能使用,跟其他源文件中的同名变量互不干扰。