【C语言】关键字static的作用

目录

1、static修饰局部变量

2、static修饰全局变量

3、static修饰函数


static在C语言中是用来修饰变量和函数的

static修饰局部变量—称为静态局部变量

static修饰全局变量—称为静态全局变量

static修饰的函数—称为静态函数

1、static修饰局部变量

//代码1
#include <stdio.h>

int main()
{
    int i;
    for(i=0;i<5;i++)
    {
        int sum = 1;
        sum++;
        printf("%d\t",sum);
    }
    return 0;
}
//代码2
#include <stdio.h>

int main()
{
    int i;
    for(i=0;i<5;i++)
    {
        static int sum = 1;//static修饰局部变量sum
        sum++;
        printf("%d\t",sum);
    }
    return 0;
}

代码1运行结果:

 代码2运行结果:

static修饰局部变量后,改变了什么?

(1)、从运行结果上看出static修饰局部变量时,改变了局部变量的生命周期,变量的生命周期被延长。

(2)、从存储位置上看,普通的局部变量存储在栈区,被static修饰后变为静态局部变量,存储在.data或者.bss段。

2、static修饰全局变量

//源文件1.c
#include <stdio.h>

int a = 10;    //在1.c中定义两个全局变量a和b
int b = 20;
//源文件2.c

#include <stdio.h>

extern int a;    //extern引用1.c中的变量a,b
extern int b;

int main()
{
    int c = a + b;
    printf("%d\n",c);
    return 0;
}

源文件2.c最终运行结果为30;

如果将源文件1.c的全局变量前加上static

//源文件1.c改
#include <stdio.h>

static int a = 10;    //在1.c中定义两个全局变量a和b
static int b = 20;

源文件2.c将报错,无法连接到源文件1.c的静态全局变量。

作用:当static修饰全局变量时,这个全局变量将不能被其他源文件引用,为了数据安全。

static修饰全局变量后,改变了什么?

改变了其变量的作用域,使这个全局变量只能在自己所在的源文件内部使用。

3、static修饰函数

//源文件1.c
#include <stdio.h>

int Add(int x, int y) 
{
    return x+y; 
}
//源文件2.c

#include <stdio.h>

int main()
{
    int a = 10;
    int b = 20;
    int sum = Add(a,b);
    printf("%d\n",sum);
    return 0;
}

源文件2.c最终运行结果为30;

如果将源文件1.c的函数前加上static

//源文件1.c改
#include <stdio.h>

static int Add(int x, int y) 
{
    return x+y; 
}

源文件2.c将报错,无法连接到源文件1.c的函数。

       static修饰函数后,结果同修饰全局变量一样,修改了函数的作用域,使这个函数只能在1.c的源文件内使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值