5.内存分析

知识点一:内存分区

内存分析

知识点二:普通局部变量、 普通全局变量、静态局部变量、静态全局变量

1、普通局部变量

    定义形式:在函数面定义的普通变量就是普通局部变量。

void test01 ( )
{
    int numl=10;//普通局部变量
}

    作用范围:离它最近{} 之间有效

    生命周期:离它最近的 {} 之间有效,离开 {} 的局部变量系统自动回收

    存储区域:栈区

    注意事项:

        1)普通局部变量初始化内容不确定

        2)普通局部变量同名 就近原则(同一个{}里的)

局部变量注意事项
void test0l ()
{
    //局部变量同名就近原则
    int data= 100;
    {
        int data = 200;
        printf("A:data = %d\n", data) ;    //200
    }    
    printf("B:data = %d\n", data) ;        //100
}

2、普通全局变量

     定义形式:定义在函数外边的变量就是普通全局变量

int data;//普通全局变量 在函数外边定义
void test02()
{
}

     作用范围:

     1)当前源文件都有效

         全局变量声明的时候最好也加上extern(用于区别)

         如果函数在全局变量定义的上方,如果没有变量声明则不可用,声明时注意不要赋值

     2)其他源文件使用全局变量时,必须extern 声明

          //extern本质:告诉编译器 变量、函数 来至其他源文件

全局变量解析

     生命周期:整个 进程 都有效(程序结束的时候全局变量才被释放)

     存储区域:全局区

     注意事项:

          1)全局变量初始化内容为 0

          2)如果全局变量要在其他源文件中使用必须在所使用的源文件中加extern声明

          3)如果全局变量和局部变量同名 在 {} 中优先使用局部变量

3、静态局部变量

    定义形式:在函数定义前面必须加 static 修饰这样的变量叫静态局部变量

void test01 ()
{
    static int num;//静态局部变量
    return ;
}

    作用范围:离它最近{} 之间有效

    生命周期:整个进程(程序结束的时候静态局部变量才被释放)

    存储区域:全局区

    注意事项:

        1)静态局部变量初始化内容为0 (全局区)

        2)只能被初始化一次(重要)

#include<stdio.h>
void fun1(void)
{
    //静态局部变量只能被初始化一次
    static int num = 10;    //静态局部变量 
    num++;
    printf("num = %d\n",num);
    return;
}
int main(int argc,char *argv[])
{
    fun1();
    fun1();
    fun1();
}

4、静态全局变量

    定义形式:在函数边定义同时加 static 这样的变量就是静态全局变量

#include<stdio. h>
static int data = 10;//静态全局变量
int main(int argc, char *argv[ ])
{   
	return 0;
}

    作用范围:当前源文件有效 不能在其他源文件 中使用

    生命周期:整个进程(程序结束 静态全局变量才被释放)

    存储区域:全局区

    注意事项:

        1)静态全局变量初始化内容为 0

        2)静态全局变量只在当前源文件有效

知识点三:全局函数(普通函数) 和 静态函数 (局部函数)

1、全局函数(普通函数)

void my_ fun(void )
{
    printf("(全局函数)普通函数\n");
    return;
}

     特点:其他源文件可以使用全局函数,必须加 extern 声明

2、静态函数 (局部函数)

static void my_static_fun(void)
{
    printf("(静态丽数)局部函数\n");
    return;
}

     特点:只能在当前源文件使用,能在其他源文件使用

     注意:如果想在其他源文件调用静态函数,需要将静态函数封装全局函数中,同时全局函数和静态函数必须是同一个源文件

  • 13
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星仔_X

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值