创作不易,本篇文章如果帮助到了你,还请点赞支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ
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);
}
总结