static与extern的区别
时间: 2023-04-05 21:03:50 浏览: 104
static和extern都是C语言中的存储类别关键字,它们的作用不同。static用于限制变量或函数的作用域,使其只在定义它的文件中可见;而extern用于声明变量或函数在其他文件中定义,使得当前文件可以使用这些变量或函数。简单来说,static是用来限制变量或函数的可见范围,而extern是用来扩大变量或函数的可见范围。
相关问题
c语言auto static与extern
C语言中,auto和static关键字用于定义变量的存储类型。
auto: 默认存储类型,在函数体内定义的变量默认为auto。这种类型的变量存储在栈中,作用域仅限于所在函数。
static: 存储类型为静态,在整个程序运行期间都存在。这种类型的变量存储在静态存储区中,作用域仅限于所在文件。
extern: 存储类型为外部,用于在一个文件中声明另一个文件中已经定义过的变量或函数。extern变量或函数只是声明,而不是定义。
c语言auto static与extern register
这是关于C语言中变量存储类别的问题。其中:
- auto 存储类别用于在函数内部声明一个自动变量,该变量在函数执行时创建,在函数执行完毕时销毁。
- static 存储类别用于在函数内部或外部声明一个静态变量,该变量在程序生命周期内一直存在,而不是在函数执行完毕时销毁。如果在函数内部声明一个静态变量,则该变量只会在函数第一次执行时初始化,之后每次函数执行时都会保留上一次的值。
- extern 存储类别用于声明一个在其他文件中定义的全局变量。在当前文件中声明一个 extern 变量时,编译器会在链接阶段查找该变量的定义,如果找到了就使用该定义,否则会报链接错误。
- register 存储类别用于声明一个寄存器变量,该变量被存储在 CPU 寄存器中,以便快速访问。但是,由于寄存器数量有限,编译器可能会忽略 register 关键字,将变量存储在内存中。
需要注意的是,存储类别只影响变量的存储位置和生命周期,不影响变量的类型和值。
阅读全文