a和b的作用域仅限于内层大括号,出了大括号则不可访问或者表示外部的同名变量。在内层大括号内a表示内层中定义的a,它覆盖了外层中定义的a的作用域。
创新互联公司为客户提供专业的网站设计、成都网站设计、程序、域名、空间一条龙服务,提供基于WEB的系统开发. 服务项目涵盖了网页设计、网站程序开发、WEB系统开发、微信二次开发、手机网站制作设计等网站方面业务。
作用域:起作用的区域
变量按作用域分:
局部变量:定义在函数内部的变量
全局变量 :定义在函数外部的变量
变量按存储类型分
auto:自动类型
作用域决定变量的生命周期
注意点:如果局部变量和全局变量起冲突,局部变量此时会成瞎子,看不到全局变量的存在
函数递归
作用域的定义是这样的:如果一个变量在某个文件或函数范围内是有效的,则称该文件或函数为该变量的作用域,在此作用域内可以引用该变量,所以又称变量在此作用域内“可见”,这种性质又称为变量的可见性。例如
文件file.c
int a;
main函数
{…
f2();
…
f1();
}
f1函数
{auto int b;
…
f2()
…
}
f2函数
{static int c;
…
}
这里a的作用域就是整个文件,b的作用域是f1函数,c的作用域是f2函数!其实作用域就是作用范围没什么很复杂的概念!
函数a里定义的变量函数b里面不能用,函数里定义的变量是局部变量,作用域是从定义处到函数结束,所以,不同的函数里可以有同名的函数。如果在函数b里想用函数a的变量,那在函数a里调用函数b,把函数的的变量当做参数传过去(注意:c语音参数传递有值传递和指针两种喔)。再或者把变量定义为全局变量,那么任何函数都能直接用了(函数里定义的和全局变量同名的变量会根据变量作用域的规则来确定哪个变量是有效)。自己动手试试吧