auto:自动存储类别,用于定义局部变量,表示变量在函数内部自动创建和销毁,初始值为随机值。static:静态存储类别,用于定义全局变量或局部变量,表示变量在程序运行期间一直存在,初始值为0或常量表达式。extern:外部存储类别,用于声明在其他文件中定义的全局变量,表示变量可以在多个文件中共享,初始值由定义时指定。reg...
static和extern修饰局部变量 static修饰局部变量://作用:1)static定义的变量的作用域会得到延长,从程序启动到程序退出,但它并没有改变变量的作用域局部的static实际也是全局的//2) static定义变量的语句只会被执行一次extern是不能够修饰局部变量的 #include <stdio.h>/** **/voidsum(){//没有使用static修饰intn...
如果函数的声明中带有关键字extern,仅仅是暗示这个函数可能在别的源文件里定义,没有其它作用。 extern 和 static (1) extern 表明该变量在别的地方已经定义过了,在这里要使用那个变量. (2) static 表示静态的变量,分配内存的时候, 存储在静态区,不存储在栈上面. static 作用范围是内部连接的关系, 和extern有点...
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只是起作用域限制作用, 限定作用域在本模块(文件内部.使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名。示例程序三:/file1.cppstatic int varA;int varB;extern void funA(static void funB(/file2.cppextern int varB; / 使用file1.cpp...
关于static和extern变量的一些总结 static关键字是C, C++中都存在的关键字, 它主要有三种使用方式, 其中前两种只指在C语言中使用, 第三种在C++中使用(C,C++中具体细微操作不尽相同, 本文以C++为准).(1)局部静态变量 (2)外部静态变量/函数 (3)静态数据成员/成员函数 下面就这三种使用方式及注意事项分别说明 ...
static static修饰的全局是内部链接性。 内部链接性的在编译单元间不共享,编译单元你理解成源文件也马马虎虎。 extern extern修饰的全局是共享性的 common.h #pragmaonce#ifndef_TOOL_H_#define_TOOL_H_//int a在这里定义只会重定义//int a = 1;staticintb=3;externintc;//define ABC是不分配内存地址的#de...