文章目录static是c语言中比较常用的关键字,具体有三种用法
成都网站制作、成都网站建设,成都做网站公司-成都创新互联已向上千家企业提供了,网站设计,网站制作,网络营销等服务!设计与技术结合,多年网站推广经验,合理的价格为您打造企业品质网站。
一、修饰局部变量
二、修饰全局变量
三、修饰函数
下面进行具体讲解
使用static的时候我们需要注意使用static关键字的时候需要放在变量类型和返回值类型的前面
当static修饰局部变量的时候,会对局部变量的生命周期进行改变代码示例
#includevoid test(){int a = 10;
a = a+2;
printf("%d",a);
}
int main(){for(int i=0;i<2;i++){test();
}
//printf("%d",a);这里需要注意一下,如此做会失败因为其作用域并没有改变
}
这里printf会输出12和12因为此时a的生命周期在test内,出tset即销毁
#includevoid test() {static int a = 10;
a = a+2;
printf("%d",a);
}
int main(){for(int i=0;i<2;i++){test();
}
}
二、修饰全局变量这里printf会输出12和14,因为用static修饰局部变量改变了a的生命周期(因为此时a从栈区被改为存储到静态区),此时a的生命周期为整个程序的生命周期,即程序结束才会销毁。
当static修饰全局变量的时候会改变被修饰变量的外部链接属性为内部连接属性。代码示例
(文件一)
void test(){int a = 10;
}
(文件二)
extern int a;
int main(){printf("%d",a);//程序结果 10
}
此时输出10成功
(文件一)
void test(){static int a = 10;
}
(文件二)
extern int a;
int main(){printf("%d",a);//程序结果 报错,因为找不到变量a
}
三、修饰函数此时输出失败,因为static修饰全局变量a使其外部连接属性改为内部链接属性,这就使extern不能链接到a
static修饰函数的时候与修饰全局变量类似,会改函数的外部连接属性为内部链接属性。代码示例
(文件一)
void test(){int a = 10;
printf("%d",a);
}
(文件二)
extern void test();
int main(){test();
}
此时输出10成功
(文件一)
static void test(){int a = 10;
printf("%d",a);
}
(文件二)
extern void test();
int main(){test();//失败,因为static取消了函数外部链接属性
}
报错,因为extern未能成功链接到test(),static将test的外部链接属性改成了内部链接属性
static可以修饰
一、局部变量(改变生命周期)
二、全局变量(改外部链接属性为内部链接属性)
三、函数(改外部链接属性为内部链接属性)
如有纰漏请各位斧正,如果对你有帮助的话不要忘记点个赞支持一下作者。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧