原创
嵌入式微控制器C语言学习笔记6-《C程序设计语言(第2版)》第4章(第二部分)
由于C语言不允许在一个函数中定义其它函数,因此函数本身是“外部的”。
任何函数都可以通过名字访问一个外部变量,如果函数间需要大量变量的共享,使用外部变量比使用参数表更方便、更有效。
自动变量只能在函数内部使用,而外部变量是永久存在的。如果两个函数必须共享某些数据,而这两个函数又互不调用,最方便就是将共享数据定义为外部变量。
名字的作用域指的是程序中可以使用该名字的部分。在函数开头声明的自动变量,其作用域是声明该变量名的函数。函数的参数也是相同的,实际上可以将其看作是局部变量。
外部变量或函数的作用域从声明处开始,到其所在的源文件的末尾结束。
如果要在外部变量定义前使用该变量,或者外部变量的定义与变量的使用不在同一源文件中,则必须在相应的变量声明中强制性地使用关键字extern。
变量声明用于说明变量的类型等,变量定义除此之外还要引起存储空间的分配。
在一个源程序的所有源文件中,一个外部变量只能在某个文件中定义一次,而其它文件可以通过extern声明访问它。外部变量的初始化只能出现在其定义中。
合理规划、精心组织头文件可以将一个长的源文件划分为若干个短的源文件,并解决各个文件中数据共享的问题。
用static声明限定外部变量和函数,可以将其后声明的对象的作用域限定为被编译源文件的剩余部分。通过static限定外部对象,可以达到隐藏外部对象的目的。static类型的内部变量是一种只能在某个特定函数中使用但一直占据存储空间的变量。
register声明的变量在程序中使用频率最高,将其放入机器的寄存器中,可以使程序更小、执行速度更快。而实际使用中,底层硬件环境的实际情况对寄存器变量的使用会有一些限制。
一个良好的程序设计,应该避免出现外部变量名与内部变量名相同的情况。
在不进行显式初始化的情况下,外部变量和静态变量都将被初始化为0,而自动变量和寄存器变量的初值则没有定义。
文章评论(0条评论)
登录后参与讨论