欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C语言局部变量,全局变量,静态变量,动态变量的区别与联系

程序员文章站 2022-05-12 12:30:48
...

变量与常量

变量:指的是在程序运行过程中,可以通过代码使他的值改变的量。

常量:程序运行过程中不会改变的量。

局部变量

局部变量:定义在函数中的变量。

全局变量

全局变量:定义在函数外面的变量。

#include<stdio.h>

int g_a;              //定义在函数外面叫全局变量

int main(void)
{

    int a;            //定义在函数里面叫局部变量
    
    return 0'

}

局部变量与全局变量的对比:

(1)定义时没有初始化局部变量值是随机的,而全局变量值是0。

(2)全局变量具有文件作用域,而局部变量只有代码块作用域(工作的区域)。

(3)生命周期上:全局变量在程序开始运行之前的初始化阶段就诞生了,到整个程序结束退出的时候才死亡,而局部变量在进入局部变量所在代码块时诞生,在该代码块退出的时候死亡。

(4)变量分配位置:全局变量分配在数据段(数据段存的是数)上,而局部变量分配在栈上面

判断一个变量能不能使用,有没有定义,必须注意两点:第一,该变量定义的作用域是否在当前有效,是否包含当前位置。第二:变量必须先定义后使用。

#include<stdio.h>

void func(void);
//全局变量的特点:在整个文件中所有函数内都可以访问,访问的都是该变量本身,如果你在之前某个函数中更改了他的值,则后面在引用时他的值就是前面更改之后的值
int a;

int main(void)
{
    printf("%d",a);
    func();
    printf("%d",a);
    a = a + 1;
    printf("%d",a);
    
    return 0;
}


void func(void)

{
    a = 100;
}

C语言局部变量,全局变量,静态变量,动态变量的区别与联系

C语言中static静态局部变量和非静态局部变量的区别

C语言局部变量,全局变量,静态变量,动态变量的区别与联系C语言局部变量,全局变量,静态变量,动态变量的区别与联系

总结:

(1)静态局部变量和普通局部变量不同,静态局部变量所在的函数在调用多次时,只有第一次才会经历变量第一和初始化,以后多次调用时不再定义和初始化,而是维持之前上一次调用时执行后这个变量的值,本次接着来使用。

(2)静态局部变量在第一次函数被调用时创造并初始化,但在函数退出时不会死亡,而是保持其值等待函数下一次被调用。下一次调用时不在重新创造和初始化该变量,而是直接使用上一次留下的值位基础进行操作。

普通局部变量

普通的局部变量定义时直接定义,或者在定义前面加auto

跨文件变量引用需要声明   extern

想在b.c中直接引用a.c中定义的全局变量g_a,必须在b.c中引用前先声明g_a,如何声明变量?extern int g_a;

extern关键字

extern int g_a;这句话是一个全局变量g_a的声明,这句话告诉编译器,我在外部某个地方定义了一个全局变量int g_a,而且我要现在在这里引用它,告诉编译器一声,不用报错

局部变量不能跨文件引用

普通全局变量与静态全局变量

静态全局变量用来解决重名问题,告诉编译器这个变量只能在当前文件使用,不会在其他文件中使用,这样不会担心重名问题,