说一说静态变量,全局变量,局部变量的特点
从所在位置、作用域、内存位置、生命周期来说一说静态变量、全局变量、局部变量的特点:
位置
局部变量:在函数中或者方法中,函数的参数,局部代码块中。
全局变量:在文件中,函数外。
静态变量:使用 static 修饰,可以是局部、全局或者修饰类成员。
作用域
局部变量:作用域为局部,也就是函数或方法中,出了作用域就不能访问,同一作用域不能有同名的变量,如果全局变量和局部变量同名,则访问时采用"就近原则"。
全局变量:作用域为全局,在本文件或者其它文件中都可以访问,在其它文件中访问可以通过 extern 进行声明,表示使用外部的全部变量。
静态变量:静态局部变量作用域为局部,静态全局变量作用域为所在文件中,其它文件中访问不了。
内存位置
局部变量:存储在栈内存中。
全局变量:存储在静态存储区中,如果未初始化或者初始化为0,在BSS段,初始化了在DATA段。
静态变量:存储在静态存储区中,如果未初始化或者初始化为0,在BSS段,初始化了在DATA段。
生命周期
局部变量:出了作用域销毁。
全局变量:程序结束销毁。
静态变量:程序结束销毁。
从所在位置、作用域、内存位置、生命周期来说一说静态变量、全局变量、局部变量的特点:
位置
局部变量:在函数中或者方法中,函数的参数,局部代码块中。
全局变量:在文件中,函数外。
静态变量:使用 static 修饰,可以是局部、全局或者修饰类成员。
作用域
局部变量:作用域为局部,也就是函数或方法中,出了作用域就不能访问,同一作用域不能有同名的变量,如果全局变量和局部变量同名,则访问时采用"就近原则"。
全局变量:作用域为全局,在本文件或者其它文件中都可以访问,在其它文件中访问可以通过 extern 进行声明,表示使用外部的全部变量。
静态变量:静态局部变量作用域为局部,静态全局变量作用域为所在文件中,其它文件中访问不了。
内存位置
局部变量:存储在栈内存中。
全局变量:存储在静态存储区中,如果未初始化或者初始化为0,在BSS段,初始化了在DATA段。
静态变量:存储在静态存储区中,如果未初始化或者初始化为0,在BSS段,初始化了在DATA段。
生命周期
局部变量:出了作用域销毁。
全局变量:程序结束销毁。
静态变量:程序结束销毁。
得分点
位置、作用域、内存位置、生命周期
参考答案
标准回答
从所在位置、作用域、内存位置、生命周期来说一说静态变量、全局变量、局部变量的特点:
位置
局部变量:在函数中或者方法中,函数的参数,局部代码块中。
全局变量:在文件中,函数外。
静态变量:使用 static 修饰,可以是局部、全局或者修饰类成员。
作用域
局部变量:作用域为局部,也就是函数或方法中,出了作用域就不能访问,同一作用域不能有同名的变量,如果全局变量和局部变量同名,则访问时采用"就近原则"。
全局变量:作用域为全局,在本文件或者其它文件中都可以访问,在其它文件中访问可以通过 extern 进行声明,表示使用外部的全部变量。
静态变量:静态局部变量作用域为局部,静态全局变量作用域为所在文件中,其它文件中访问不了。
内存位置
局部变量:存储在栈内存中。
全局变量:存储在静态存储区中,如果未初始化或者初始化为0,在BSS段,初始化了在DATA段。
静态变量:存储在静态存储区中,如果未初始化或者初始化为0,在BSS段,初始化了在DATA段。
生命周期
局部变量:出了作用域销毁。
全局变量:程序结束销毁。
静态变量:程序结束销毁。