首页 > 编程语言 > 详细

C语言static关键字

时间:2021-02-03 10:19:05      阅读:29      评论:0      收藏:0      [点我收藏+]

static关键字

1 .基本介绍

  • static 关键字在C语言中比较常用,使用恰当能够大大提高程序的模块化特性,有利于扩展和维护

2 . 局部变量使用static修饰

  • 局部变量被static修饰后,我们称为静态局部变量
  • 对应静态局部变量在声明时未赋初值,编译器也会把它初始化为0
  • 静态局部变量存储于内存的静态存储区(全局性质),只会被初始化一次,即使函数返回,它的值也会保持不变
#include<stdio.h>

void main(){
    static int n;
    //n就是静态局部变量,默认初始化为0
    printf("n=%d",n);
    getchar();
}

void fn(void){
    int n =10;//普通变量,每次执行都会初始化,n在栈区
    printf("n=%d",n);
    n++;
    printf("n++=%d",n);
}

void fn_static(void){
    static int n = 10;//静态局部变量,放在静态存储区,全局性质空间
    printf("static n=%d",n);
    n++;
    printf("n++=%d",n);
}

int main(void){
    fn();
    printf("---------------");
    fn_static();
    printf("----------------");
    fn();
    printf("-------------");
    fn_static();
    getchar();
    return 0;
}

3 . 全局变量使用static修饰

  • 普通全局变量对整个工程可见,其他文件可以使用extern外部声明后直接使用,也就是说其他文件不能再定义一个与其相同名字的变量了(否则编译器会认为他们是同一个变量),静态全局变量仅对当前文件可见,其他文件不可访问,其他文件可以定义与其同名的变量,两者互不影响
  • 定义不需要与其他文件共享的全局变量时,加上static关键字能够有效的降低程序之间的耦合,避免不同文件变量名的冲突
#include<stdio.h>

//在一个文件中,使用另外一个文件的全局变量,使用ertern引入即可

extern int num;
extern int num2;
int num =60;
void main(){
    printf("num=%d num2=%d",num,num2);
    getchar();
}

int num = 10;
//普通全局变量
static int num2 = 20;
//静态全局变量,只能在本文件中使用,而不能在其他文件使用

4 . 函数使用static修饰

  • 函数的使用方式与全局变量类似,在函数的返回类型前加static,就是静态函数
  • 非静态函数可以在另一个文件中通过extern引用
  • 静态函数只能在声明它的文件中可见,其他文件不能引用该函数
  • 不同的文件可以使用相同名字的静态函数,互不影响
#include <stdio.h>
void fun1(void){
    //普通函数
    printf("hello from fun1");
}

static void fun2(void){
    //静态函数,它只能在本文件中使用
    printf("hello from fun2");
}

#include<stdio.h>

extern void fun1(void);
extern void fun2(void);
void fun2(){
    ...
}
void main(){
    fun1();
    fun2();
    getchar();
}

C语言static关键字

原文:https://www.cnblogs.com/mx-info/p/14365120.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!