c语言局部变量的三种类型auto,static和register详解 您所在的位置:网站首页 c语言中实型变量分为三种类型 c语言局部变量的三种类型auto,static和register详解

c语言局部变量的三种类型auto,static和register详解

2024-02-27 10:33| 来源: 网络整理| 查看: 265

一:auto类型的变量        

        auto类型的变量也称作自动型变量,自动型变量是在动态存储去内分配单元,函数返回的时候,编译系统会释放这些存储单元,就是说当函数调用结束后,自动类型变量就会不复存在。        

        在c语言中我们可能很少见到auto这个关键字,原因是当我们没有显式的指定局部变量的存储类型的时候,系统就会默认变量是自动型变量,所以我们根本不用去特意的写上auto这个关键字。

二:静态类static

        用static这个关键字修饰之后的局部变量,是存储在静态区的,也就是说当我们想要保留一个局部变量,而不是像auto型那样出了函数之后就销毁的时候,我们就可以在定义变量的时候用static这个关键字来修饰变量。

        静态局部变量只在第一次定义的时候赋初值,如果在定义的时候没有赋值的话默认赋值为0或者'\0'(根据实型还是字符型)。

下面是一个例子:(一起来算一算输出的结果是什么)

#include void fun() { static i=0; printf("%d",i); i++; } int main() { fun(); fun(); fun(); fun(); return 0; }//程序的结果是什么

当我们明白了static这个关键字的时候我们很容易的就会知道输出的答案是0123,就是因为static修饰的变量在出了函数之后还会保留,所以通常就用这种变量来写一些具有记忆性的函数。

三:寄存器变量register

        一般情况下变量是存储在内存中的,当要使用变量进行运算的时候,控制器就会发出指令将内存中的该变量送到运算器中,这样就有一个问题:当我们频繁的使用这个变量的时候,多次的拿取就会造成效率的下降,所以就有了寄存器这种东西。

        寄存器是在运算器中,寄存器变量参与运算的时候不用在内存中存取,这样就提高了执行的效率。

        但是,寄存器的大小是有限的,不能无限的定义寄存器变量,当寄存器大小不足的时候,即使使用了register这个关键字该变量也不会存储到寄存器中。

        总的来说,寄存器变量就是适合那种多次的频繁使用的变量,用于提高运算的效率。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有