您的位置:首页 > 编程语言 > C语言/C++

C语言详解(3)变量的属性--关键字auto、register、static

2017-11-25 19:13 671 查看
变量的属性—auto、register、static
 
 关于C语言详解系列blog的目录:http://blog.csdn.net/snake_lp/article/details/78630717

 

变量可以是各种语言的基石。如果没有变量,你无法想象编程语言会是什么样子的。我们在编程的过程中,需要合理并熟练的利用变量的属性,使变量发挥最大的作用,将变量的艺术发挥到极致。

C语言中变量的数据是有几个关键字来进行修饰的。下面我们将一起探讨一下修饰变量的几个关键字。

1.      auto

auto是C语言中局部变量的默认属性,只能修饰局部变量。表示此变量存放在栈空间中。

C语言中一般很少使用此关键字,但是对于局部变量默认的类型就是auto,它是隐性的修饰了局部变量。

auto的出现就意味着,当前变量的作用域为局部的(在函数内部有效或者代码段内有效),同时也意味着该变量的存储位置在栈中。如果没有对此变量进行初始化,直接使用的话,就是一个随机值。

 

2.      register

register指明变量存储在寄存器中。需要注意的是register用于请求寄存器变量,但是不一定功能请求成功。register变量必须是MCU寄存器可以接受的值。并且regsiter变量不能使用&来进行访问。这是因为&运算符只能去内存的地址,而不能取寄存器的地址,所以这样的操作是非法的。

register类型的变量出现的概率也比较小,因为在现在的嵌入式软件开发中都会使用结构体来抽象MCU的寄存器。所以在我们开发的过程中,基本上不会使用到此关键字。

寄存器变量对于内存中的变量来说,它的访问速度是非常快的。但是在一个MCU钟寄存器的数量是有限的,所以一般情况下程序员不会直接去使用寄存器变量。

寄存器变量是指一个变量直接引用寄存器(引用和映射存在区别的),对变量的操作其实就是对寄存器的直接访问。

 

3.      static

static表示的是静态的,即可以修饰变量也可以修饰函数。static修饰局部变量,表示的是局部变量存储在静态程序区;static修饰全局变量,表示该全局变量的作用域仅仅在本文件有效;static修饰函数表示函数只有在本文件中有效,不能跨文件进行调用。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息