你这个问题挺的。有两个关键词几乎完全不相关。区别真的很难回答。连接估计都是类型修饰符,差别太大。一般来说,extern修改全局变量或函数来表示外部引用。c语言还有一个特殊用法,externc表示这个程序应该被认为是用c语言写的。
static一般表示局部静态变量,可以用在函数或文件中。
静态是声明外部变量仅限于这个文件的引用,是这个文件的全局变量。如果要在文件之间通用定义外部变量
一些编程语言不支持。;不一定要求程序员初始化变量(如vb),因为如果你不t初始化,编译器/解释器会自动帮你初始化(变量数据类型的默认初始值会赋给变量)。
即使在c语言中,也有一些变量。;t需要初始化,比如静态变量。规则如下:对于原生数据类型,用对应类型的零值初始化;类中的静态对象由它们的默认构造函数初始化。
此外,全局变量以及calloc()函数分配的空间将被自动初始化。所以你理解的变量必须初始化。其实只是因为在c或类似语言中,局部自动变量和寄存器变量是从堆、栈或寄存器中临时分配(重用)的。我们不。;我不知道前面的代码对这个空间做了什么,所以这些值是随机的。
除非编译器设置为调试模式,此时编译器会自动初始化局部变量(0xcc),这也是有时候调试模式成功但释放模式错误的原因。
全局变量和静态变量不需要初始化是因为具有全局作用域(包括全局和静态)的变量会从全局变量区分配空间,而由于ram内存的特性,这些变量会被自动清除。
是的,
方法内部的定义叫做"局部变量",不是静态变量。局部变量可以不能添加静态变量,包括受保护的、私有的和公共的,但是可以添加全局变量。静态变量在类中定义,在方法体之外,局部变量保存在堆栈中。