一 static修饰的数据在内存中的位置
1.1内存四区
我们从static这个英文的意思静态的,它修饰的数据在内存中的位置如图所示
二 static的作用(主要说通用的,后面再简单说一下C++中的)
2.1static修饰的函数或者变量只能在本文件中使用
2.1.1对于修饰的函数
01.c
int add(int i, int j)
{
return (i + j);
}
02.c
#include <stdio.h>
extern int add(int i, int j);
int main(int argc, char const *argv[])
{
printf("%d\n", add(1, 2));
return 0;
}
这个可以得出正确答案,如下
但是如果把01.c改成这样就不行
static int add(int i, int j)
{
return (i + j);
}
2.1.2对于修饰的成员
01.c
02.c
结果:
但是如果加static修饰的话,就像这样
结果就是这样的
2.2static修饰的局部变量,会被延长生命周期
#include <stdio.h>
#include <unistd.h>
void func()
{
static int i = 0;
while (++i){
printf("%d\n", i);
sleep(1);
if (i == 3){
break;
}
if (i == 6){
break;
}
}
}
int main(int argc, char const *argv[])
{
func();
func();
return 0;
}
结果图:
2.3C++中可以用来建立单例模型
这个单例模型详细可以看主页