【c语言】全局变量 | 局部变量的生命周期与作用域

创作不易,本篇文章如果帮助到了你,还请点赞支持一下♡>𖥦<)!! 

主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!

给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ

c语言系列专栏: c语言之路重点知识整合  

 

目录

一、 全局变量

二、局部变量

三、重名:临近原则 

四、extern外部变量的声明

总结 


一、 全局变量

全局变量的生命周期长,从程序启动到程序关闭

在主函数外定义int类型i,i为全局变量,存放在全局/静态区,未初始化默认是0。

 

 

 二、局部变量

局部变量生命周期较短,在函数调用时局部变量在栈区,函数执行完在栈区被回收

也可以是if switch for while的作用范围、复合的多条语句构成的语句块,在{ }内部。

调用函数时创建,函数执行完回收:

 

三、重名:临近原则 

当全局变量和局部变量同时存在定义,调用时需要根据 临近原则:离哪个变量近哪个起作用

#include <stdio.h>
int i;
void fun();
int main()
{
	printf("%d\n",i);
	fun();
	printf("%d\n",i);
	fun();
	return 0;
}
void fun()
{
	int i=10;
	i++;
	printf("%d\n",i);  //输出结果为11  i取局部变量的i
}

四、extern外部变量的声明

所谓外部变量即在另外的源代码文件中定义的全局变量。如果当前的源代码文件要访问时;就需要用extern 声明一下,即告诉编译器,我目前用的变量是本代码文件以外定义的。

用extern仅仅是声明告知一下,并不是定义。同样在使用extern声明时不能赋予初始值,否则时重定义错误。声明不等于定义!! 定义是定义新的变量,声明是告知变量。 

外部链接声明:在同一项目下其他的源文件中定义了变量。另一个源文件就可以extern声明

        如果只有声明没有定义:LINK错误 无法解析的外部符号

因此在一个项目内,一个全局变量尽量 仅在一处定义,可以多处无数次外部声明。

#include<stdio.h>
extern int age = 1;//当赋值后就起到了定义变量创建空间的作用,如果没有全局变量重名程序可正常执行。
    //此处extern关键字无效
void fun()
{
    printf("fun 里打印 %d\n",age);
}

 

总结 

 

 

大家的点赞、收藏、关注将是我更新的最大动力!欢迎留言或私信建议或问题。
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容! 

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天喜Studio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值