CSDN的同学们大家好!,今天学习的内容是C语言中static关键字,让我们来进入今天的学习吧。let's go!
- 前言
- 一、static是什么?
- 二、static的使用方法
前言
C语言中有很多关键字,例如:break case switch continue....今天我们来认识static关键字!
一、static是什么?
在C语言中,static主要是修饰变量和函数的。
修饰局部变量:称为静态局部变量。
修饰全局变量:称为静态全局变量。
修饰函数:称为函数变量。
二、static的使用方法
1.局部变量的修饰
代码如下:
#include <stdio.h>
void test()
{
int a = 1;
a++;
printf("%d ", a);
}
int main()
{
int i = 0;
while (i < 10)
{
test();
i++;
}
return 0;
}
//再没有static修饰情况下,屏幕输出打印10个2,因为int a出了它的作用域自动销毁,在i循环过程中,test()函数里面的int a初始化永远是1。
//用static修饰int a
#include <stdio.h>
void test()
{
static int a = 1;
a++;
printf("%d ", a);
}
int main()
{
int i = 0;
while (i < 10)
{
test();
i++;
}
return 0;
}
//屏幕会输出打印2~11的数字,这是为什么呢?
这是c语言中内存的分配空间情况,一个普通的局部变量是放在栈区的,而被static修饰的局部变量
是放在内存的静态区的,使局部变量的存储发生了变化。
使得局部变量出了作用域不会被销毁,影响了生命周期,相当于进化成了一个全局变量。
static修饰的局部变量改变了变量的生命周期。
让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束。
2.修饰全局变量
代码如下:
//add.c 一个源文件
static int E_DG=2023;
//tese.c 另一个源文件
#include<stdio.h>
int main()
{
printf("%d\n",E_DG);
return 0;
}
add.c 一个源文件
static int add(int x,int y)
{
return x+y;
}
//tese.c 另一个源文件
#include<stdio.h>
int main()
{
printf("%d\n",Add((2,3));
return 0;
}
//如果像上面这样写,程序运行过程中会报错。
一个全局变量是可以在整个工程中都可以使用。
全局变量具有外部链接属性,只要声明就可以在其他源文件内部适当的使用。
而当static修饰全局变量时,它的外部链接属性变成了内部链接属性,只能在自己所在的源文件内才可以使用,其他.c源文件中不能使用。