1、局部变量可以与全局变量重复吗?
答:是的,局部屏蔽整体。 需要' : '才能使用全局变量
局部变量可以与全局变量同名,并且在函数中引用此变量时将使用同名的局部变量,而不是全局变量。 某些编译器可以在同一函数中定义多个同名的局部变量。 例如,可以在两个循环中定义一个同名的局部变量,该局部变量的范围位于该循环中。
2、如何引用已经定义的全局变量?
外部
既可以引用头文件,也可以使用extern关键字。 如果引用在头文件中声明的全局变量,则假设您写错了该变量,将在编译过程中报告错误。 在extern中引用时,假设犯了同样的错误,则在编译过程中不会报告错误,而是在连接过程中报告错误。
3、全局变量可以定义在可以包含在多个. c文件的头文件中吗? 为什么?
a :好的。 在另一个c文件中以静态格式声明同名的全局变量。
可以在不同的c文件中声明同名的全局变量。 但是,如果只有一个c文件可以为此变量分配初始值,则连接没有错误
4、静态全局变量和普通全局变量的区别是什么? 静态局部变量和普通局部变量的区别是什么? 静态函数和普通函数的区别是什么?
在说明全局变量(外部变量)之前冠上静态就构成了静态全局变量。 全局变量本身是静态存储方法,静态全局变量当然也是静态存储方法。
两种保存方法都没有区别。 不同之处在于,非静态全局变量的范围是整个源程序,但如果一个源程序由多个源文件组成,则非静态全局变量在每个源文件中有效。 静态全局变量限制范围。 这意味着它只在定义变量的源文件中有效。
不能在同一源程序的其他源文件中使用。 静态全局变量的范围限定在一个源文件中,并且仅适用于该源文件中的函数,从而避免在其他源文件中出现错误。
由以上分析可知,
将局部变量更改为静态变量后,可以通过更改保存方法来更改生存期。 将全局变量转换为静态变量会改变作用域,从而限制使用范围。
静态函数与普通函数作用域不同,只在本书中有。 仅在当前源文件中使用的函数应作为内部函数(静态)进行说明,内部函数应在当前源文件中进行说明和定义。 对于可以在当前源文件之外使用的函数,必须说明头文件应包括在使用这些函数的源文件中
静态全局变量和普通全局变量的区别是什么? 静态全局变量只初始化一次,不会被其他文件单元引用。
静态局部变量和普通局部变量的区别是什么? 静态局部变量只初始化一次,下次根据上次的结果值
静态函数和普通函数的区别是什么? 内存中只有一个静态函数,并且每次调用常规函数时都会维护副本。
5、程序的局部变量存在于(暂存器),全局变量存在于(静态领域),动态申请数据存在于(暂存器)。
变量可以在程序中的三个位置解释:函数内部、函数的参数定义或所有函数外部。 根据定义的位置,变量分为局部变量、形式参数、全过程变量。 从空间上看,变量可以分为全局变量和局部变量;从时间上看,变量可以分为静态记忆变量和动态记忆变量。
一。 全局和局部变量
1。 局部变量
他意味着在函数内部定义的变量范围是定义局部变量的函数。 这意味着他只能在定义他的函数中使用
最值得注意的是,只有在定义他的模块之前,程序才会运行,然后在运行并退出模块后变量就会消失
eg。
func () )
{
intx; 局部变量x的作用域很明确……。
}
2。 全局变量
在程序运行过程中一直有效
eg。
intx=1;
func () )
{
x=x 1;
}
func1() )
{
x=x-1;
}
main () )
{
}由此可以容易地看出整数型x的作用范围
对于全局变量,如果在定义时不初始化,系统会自动分配初始化值类型0
字符类型为空“/0”
全局变量的弊端内存开销增加,函数通用性下降
定义全局变量的理想位置是在文件开头,如果与这些函数位于同一程序中的其他源程序文件中的某些函数需要使用全局变量,则在函数中使用extern指示该变量是外部的
(这里将进一步详细说明) )
eg。
main () )
{
externinta,b;
printf(minis%d/n )、min ) a、b );
}
inta=1,b=2;
intmin(x,y ) )。
intx,y;
{
intz;
z=x
return(z;
}也介绍外部变量的说明和全局变量的确定
义不是一回事对外部变量的说明只是声明该变量是在外部定义过的一个全局变量在这里引用而对全局变量的定义则是要对起分配存储单元的
一个全局变量只能定义一次可是却可以多次引用
***在同一源文件中,全局变量和局部变量同名时,在局部变量的作用域内,全局变量不起作用的。
二。静态存储变量和动态存储变量
对于程序运行期间根据需要进行临时动态分配存储空间的变量为动态存储变量
对于那些程序运行期间永久占用固定内存的变量称为静态存储变量
还要说明的是程序的指令代码是存放在程序代码区的静态存储变量是存放在静态数据区的包括全局变量等而程序中的动态存储变量存放在动态数据区如函数的形参以及函数调用时的返回地址等
三。C语言中的变量存储分类指定auto auto称为自动变量如果函数不做其他说明的话均为自动变量
static static称为静态变量。根据变量的类型可以分为静态局部变量和静态全程变量。1.静态局部变量
它与局部变量的区别在于:在函数退出时,这个变量始终存在,但不能被其它函数使用,当再次进入该函数时,将保存上次的结果。其它与局部变量一样。
2.静态全程变量
Turbo C2.0允许将大型程序分成若干独立模块文件分别编译,然后将所有模块的目标文件连接在一起,从而提高编译速度,同时也便于软件的管理和维护。静态全程变量就是指只在定义它的源文件中可见而在其它源文件中不可见的变量。它与全程变量的区别是:全程变量可以再说明为外部变量(extern),被其它源文件使用,而静态全程变量却不能再被说明为外部的,即只能被所在的源文件使用。extern extern称为外部变量。为了使变量除了在定义它的源文件中可以使用外,还要被其它文件使用。因此,必须将全程变量通知每一个程序模块文件,此时可用extern来说明。
eg.文件1为file1.c文件2为file2.c int i, j; extern int i, j; char c; extern char c; void func1(int k); func2() { main() static float k; { i=j*5/100; func1(20); k=i/1.5; func2();