从零开始学习c语言|19、生存期和存储类型

本文介绍了C语言中变量的两种存储期——静态存储期和自动存储期。静态存储期的变量在整个程序执行期间都占用内存,而自动存储期的变量在代码块结束时自动释放。此外,还讨论了存储类型,包括auto(默认的自动变量)、register(可能存储在CPU寄存器中的变量)和static(用于创建具有静态存储期的局部变量)。文章通过示例代码解释了这些概念。
摘要由CSDN通过智能技术生成
二、生存期
  • 静态存储期

  • 自动存储期

     具有文件作用域的变量属于静态存储期,函数也属于静态存储期,属于静态存储期的变量
     在程序执行中一直占据内存,直到程序结束才释放空间。具有代码块作用域的变量属于自动存储期,
     属于自动存储期的变量在代码块结束后自动释放存储空间
    
三、存储类型
存储类型就是指储存变量值的内存类型
  • auto

     在代码块中声明的变量,默认的存储类型就是自动变量,
     使用关键字auto来描述,因为时默认类型,所以不写也是完全可以的,
     当在代码块中声明的变量与全局变量命名有冲突时,推荐写上auto关键字
    
  • register

     	寄存器变量,当你使用寄存器关键字声明变量时,该变量就有可能存储在cpu的寄存器当中,
     	一旦申明为寄存器变量,那么将不允许有对其取地址的操作行为。
    
#include <stdio.h>
int main()
{
    register int i = 0;
    printf("%p", &i);

    return 0;
}

在这里插入图片描述

  • static

     使用static声明局部变量,可以将局部变量指定为静态局部变量,拥有静态存储期,
     直到程序结束才释放内存空间
    
#include <stdio.h>

void func()
{
    static int count = 0;//static声明局部变量,该局部变量拥有静态存储期,注意还是局部变量
    printf("%d\n", count);
    count++;
}
int count = 0;
int main()
{
    for (int i = 0; i < 10; i++)

        func();

    return 0;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值