【C语言基础】变量类型,Static关键字的使用

:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】
:文章若有幸对你有帮助,可点赞 收藏 ⭐不迷路
:内容若有错误,敬请留言 指正!原创文,转载请注明出处

文章目录

  • 变量类型有哪些?
  • 全局变量特点
  • 全局变量的类型
    • 1.普通全局变量
    • 2.静态全局变量
    • 3.跨文件引用全局变量(extern)
  • 局部变量的类型
    • 1.普通局部变量
    • 2.静态局部变量(static)
    • 3.寄存器局部变量
  • 局部变量与全局变量的区别


变量类型有哪些?

全局变量:“在函数外定义的变量”,即从定义变量的位置到本源文件结束都有效;
局部变量:“在函数内定义的变量”,即在一个函数内部定义的变量,只在本函数范围内有效;

全局变量特点

在整个文件中,所有函数都可以访问全局变量,而且访问的都是该全局变量本身。
其次,如果之前某个函数中更改了它的值,那么后面再引用时它的值就是前面那次更改后的值。
【C语言基础】变量类型,Static关键字的使用_第1张图片

全局变量的类型

1.普通全局变量

普通全局变量就是平时使用的,定义前不加任何修饰词。普通全局变量可以在各个文件中使用(可以成为跨文件全局变量),可以在项目内别的.c文件中被看到,所以要确保不能重名。

2.静态全局变量

✨什么是静态全局变量?

静态全局变量定义时在定义前加static关键字,告诉编译器这个变量只在当前本文件内使用,在别的文件中绝对不会使用,以解决重名问题。

它具有以下特点:

1、作用域为整个文件: 静态全局变量的作用域限定在声明它的源文件中,在其他文件中无法直接访问。
静态全局变量对其他源文件是隐藏的,不会与同名变量冲突。

2、静态存储持续时间: 静态全局变量在程序执行期间始终存在,不会因为函数的调用结束而销毁。它在程序启动时进行初始化,只会分配一次内存空间,并且保留其值直到程序终止。

3、默认初始化为0:如果没有显式初始化静态全局变量, 它会被自动初始化为0。

3.跨文件引用全局变量(extern)

✨什么是跨文件引用全局变量?

在C语言中,如果你想在不同的源文件中引用和共享全局变量,你可以使用 extern 关键字来声明该变量。

局部变量的类型

1.普通局部变量

普通变量定义时直接定义,或是在定义前加auto关键字。在C语言中,普通局部变量其实就是auto int a;平时可以省略auto。

2.静态局部变量(static)

✨什么是静态局部变量?

静态局部变量是在函数内部声明的具有静态存储持续时间的变量。

✨它具有以下特点:

1、作用域限定在函数内部,只在声明它的函数中可见。
2、存在于整个程序的执行期间,即使函数调用结束,静态局部变量的值也会被保留。
3、默认情况下,静态局部变量的值在每次函数调用时不会被重新初始化。

#include 

void function() {
    // 声明静态局部变量
    static int staticLocalVariable = 0;

    // 对静态局部变量进行累加
    staticLocalVariable++;

    // 输出静态局部变量的值
    printf("Static local variable: %d\n", staticLocalVariable);
}

int main() {
    // 多次调用函数来展示静态局部变量的特性
    function(); // 输出:Static local variable: 1
    function(); // 输出:Static local variable: 2
    function(); // 输出:Static local variable: 3

    return 0;
}

3.寄存器局部变量

Register关键字,register翻译为寄存器,是C语言里面的一个关键字。
比如:Register int i3;
Register类型的局部变量表现上和auto是一样的,这个东西基本没用。知道就可以了。Register被称为C语言中最快的变量。C语言的运行时环境承诺,会尽快将register类型的变量放在寄存器中去运行(普通变量在内存中)。所以register类型的变量访问速度会快很多。

局部变量与全局变量的区别

1.定义同时没有初始化,则局部变量的值是随机的,而全局变量的值默认为0。
2.使用范围上:全局变量具有文件作用域,即:在整个文件里面的所有函数都可以使用。而局部变量只有代码块作用域,即:局部变量在哪个函数里面定义,就只能在这个函数内的代码块起作用。
3.生命周期上:全局变量在程序开始运行之前的初始化阶段就诞生了,到整个程序结束退出的时候才死亡;而普通局部变量在进入局部变量所在的代码块时诞生,在该代码块退出时死亡,也就是说局部变量无法传递和保留下去。
4.分配位置上:全局变量分配在数据段上,而局部变量分配在栈上。
【C语言基础】变量类型,Static关键字的使用_第2张图片

你可能感兴趣的:(#,C语言,c语言,开发语言)