extern register static
时间: 2023-03-19 21:25:20 浏览: 81
extern、register、static是C语言中的三个关键字。
extern关键字用于函数和变量的声明,它表示这个函数或变量在其它文件中定义,这里只是声明,让编译器知道这个函数或变量的存在,可以在本文件中使用它。
register关键字用于变量的声明,它表示这个变量将被频繁地使用,建议编译器将其放在寄存器中,以提高程序运行速度。
static关键字用于变量和函数的声明,它表示这个变量或函数在本文件中可见,其它文件无法访问,同时,它也可以改变变量的存储方式,使其在程序生命周期内一直存在,不会随着函数的调用而被销毁。
相关问题
auto static extern register
auto:自动变量。编译器自动分配存储空间并自动释放。
static:静态变量。在整个程序的生命周期内只存在一个实例,且存储在全局数据区。
extern:外部变量。用于在当前文件中声明一个在其他文件中定义的变量。
register:寄存器变量。告诉编译器尽量将该变量存储在寄存器中,提高程序运行效率。
c语言auto static与extern register
这是关于C语言中变量存储类别的问题。其中:
- auto 存储类别用于在函数内部声明一个自动变量,该变量在函数执行时创建,在函数执行完毕时销毁。
- static 存储类别用于在函数内部或外部声明一个静态变量,该变量在程序生命周期内一直存在,而不是在函数执行完毕时销毁。如果在函数内部声明一个静态变量,则该变量只会在函数第一次执行时初始化,之后每次函数执行时都会保留上一次的值。
- extern 存储类别用于声明一个在其他文件中定义的全局变量。在当前文件中声明一个 extern 变量时,编译器会在链接阶段查找该变量的定义,如果找到了就使用该定义,否则会报链接错误。
- register 存储类别用于声明一个寄存器变量,该变量被存储在 CPU 寄存器中,以便快速访问。但是,由于寄存器数量有限,编译器可能会忽略 register 关键字,将变量存储在内存中。
需要注意的是,存储类别只影响变量的存储位置和生命周期,不影响变量的类型和值。