重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1、首先,我们可以在函数外面定义变量,就是全局变量。
创新互联公司欢迎来电:028-86922220,为您提供成都网站建设网页设计及定制高端网站建设服务,创新互联公司网页制作领域十余年,包括成都柔性防护网等多个领域拥有丰富的网站维护经验,选择创新互联公司,为网站保驾护航。
2、局部变量可以与全局变量同样命名。
3、但是优先级是局部变量优先。
4、但是局部变量的生命周期是整个结构内。
5、全局变量是整个程序结束,才释放。
6、我们也可以为变量加上修饰符。
静态变量,特点就是只初始化一次。所以在这里b是只定义一次的。
于是
1 会占用,但是很少。 和全局变量定义差不多
2 没有,因为不存在多次定义,只定义了一次。
3 除了生命周期,最大的差别就是作用域了。
局部变量,只能在函数内访问,而全局变量就是谁都能访问,这样很容易出现混乱,尤其是多线程的情况下。
除此外,非静态的局部变量,在函数退出后内存就释放了,如果所有变量都定义成全局的,那明显是对内存的一种浪费。
把变量定义在主函数之外,即把变量设置为全局的。一般我们都把变量的定义放在函数中,因此变量的范围就是在本函数中。可是如果定义在所有函数的外面,这样所有的函数中,都可以使用本变量。你可以试一下这个程序。定义一个全局变量a,在主函数中进行赋值,然后在子函数中进行输出,结果是5.#includestdio.hint a;void func();//函数声明int main(){ a=5; func();}void func(){ printf("%d\n", a);}+++++++++++++++++++++++++++++++++++++++++++++++++++当然,除了定义全局变量这个方法,还有其他的方法,那就是指针。在子函数的参数中传递变量的地址,依然可以使用该变量,依然能够改变该变量的值。比如下面这个程序,在主函数中a的值为5,将变量a的地址传递过去,子函数将该地址中的变量的值设置为3,然后主函数输出,结果却是3.#includestdio.hvoid func(int *b);//函数声明int main(){ int a=5; func(a);//把变量a的地址传递过去 printf("%d\n", a);}void func(int *b){ *b=3; //将地址b中变量的值设置为3}
C语言不支持这个,只能在函数外面声明,变通的方式是,声明指针指到在外面声明的全局变量。