变量的存储类别

4.1内存的分区:

1、内存:物理内存、虚拟内存
        物理内存:实实在在存在的存储设备
        虚拟内存:操作系统虚拟出来的内存。
        操作系统会在物理内存和虚拟内存之间做映射。
        在32位系统下,每个进程的寻址范围是4G,0x00 000000~0xff ffffff
        在写应用程序的,咱们看到的都是虚拟地址。
2、在运行程序的时候,操作系统会将虚拟内存进行分区。
        1).堆
                在动态申请内存的时候,在堆里开辟内存。
        2).栈
                主要存放局部变量。
        3).静态全局区
                1:未初始化的静态全局区
                      静态变量(定义变量时前加static修饰),或全局变量,没有初始化的,存在此区
                 2:初始化的静态全局区
                      全局变量、静态变量,赋过初值的,存放在此区
        4).代码区
                存放咱们的程序代码
        5).文字常量区
                存放常量的。

4.2普通的全局变量

1、概念:
        在函数外部定义的变量

int num=100;//num就是一个全局变量
int main()
{
returm 0;
}

2、作用范围:
        普通全局变量的作用范围,是程序的所有地方。
        只不过用之前需要声明。声明方法extern int num;
        注意声明的时候,不要赋值。
3、生命周期:
        程序运行的整个过程,一直存在,直到程序结束。
        注意:定义普通的全局变量的时候,如果不赋初值,它的值默认为0

4.3静态全局变量 static

1、概念:
        定义全局变量的时候,前面用static修饰。

static int num=100;   //num就是一个静态全局变量
int main()
{
return 0;
}

2、作用范围:
        static限定了静态全局变量的作用范围
        只能在它定义的.c(源文件)中有效
3、生命周期:
        在程序的整个运行过程中,一直存在。
        注意:定义静态全局变量的时候,如果不赋初值,它的值默认为0

4.4普通的局部变量

1、概念:
        在函数内部定义的,或者复合语句中定义的变量

int main()
{
    int num;∥普通局部变量
    {
        int a;//普通局部变量
    }
}

2、作用范围:
        在函数中定义的变量,在它的函数中有效
        在复合语句中定义的,在它的复合语句中有效。
3、生命周期:
        在函数调用之前,局部变量不占用空间,调用函数的时候,才为局部变量开辟空间,函数结束了,局部变量就释放了。
        在复合语句中定义的亦如此。

#include<stdio.h>
void fun()
{
    int num=3;
    num++;
    printf("num=%d\n",num);
}
int main()
{
    fun();
    fun();
    fun();
    return 0;
}

4.5静态的局部变量

1、概念:
        定义局部变量的时候,前面加static修饰
2、作用范围:
        在它定义的函数或复合语句中有效。
3、生命周期:
        第一次调用函数的时候,开辟空间赋值,函数结束后,不释放,以后再调用函数的时候,就不再为其开辟空间,也不赋初值,用的是以前的那个变量。

void fun()
{
    static int num=3;
    num++;
    printf("num=%d\n",num);
}
int main()
{
    fun();
    fun();
    fun();
}

注意:
        1:定义普通局部变量,如果不赋初值,它的值是随机的。定义静态局部变量,如果不赋初值,它的值是0
        2:普通全局变量,和静态全局变量如果不赋初值,它的值为0

变量存储类别扩展:
        在同一作用范围内,不允许变量重名。
        作用范围不同的可以重名。
        局部范围内,重名的全局变量不起作用。(就近原则)

4.6外部函数

        咱们定义的普通函数,都是外部函数。
        即函数可以在程序的任何一个文件中调用。

4.7内部函数

        在定义函数的时候,返回值前面加static修饰。这样的函数被称为内部函数。
        static限定了函数的作用范围,在定义的.c中有效。
内部函数,和外部函数的区别:
        外部函数,在所有地方都可以调用
        内部函数,只能在所定义的.c中的函数调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值