关于C语言变量的理解
刚看了C语言程序设计中关于变量的一节,说一下自己的理解,如果有不正确的地方请大家帮忙指出来,谢谢。
1. C中的变量一次定义,在其它函数或文件中可多次说明。
定义是告诉程序为此变量分配空间(对于外部变量定义的同时对其初始化,默认为0,对于内部变量要在使用之前手动初始化);说明是声明该变量的存在,使程序在其定义以外的地方能够识别该变量,尤其是其类型。
2. 变量有外部变量和内部变量之分:
外部变量是定义在所有函数之外的变量,生存期为整个程序的生存期;内部变量是定义在某个函数内部的变量,生存期为该函数的生存期。
定义外部变量的作用是为了使多个函数能够共用此变量,在定义或说明时用extern 修饰,但若定义或说明在函数外部则已经表明其外部特性,所以extern可省;在函数内部声明时extern不可省。外部变量对在其定义或声明之后的函数可见或对包含其说明的函数可见。
定义内部变量的作用是限制其名字空间,防止其与其他变量冲突。
3. 变量还有个静态属性,用static表明(可修饰任何变量),生存期为整个程序的生存期,作用是使被其限定的变量仅能在其定义的文件内可见。
4. 寄存器变量,用register修饰,作用是提醒编译器该变量的使用频率较高,应该将其放在机器的寄存器中以加快程序的运行速度,但实际上放不放由编译器说了算(编译器可以选择忽略register)。
5. 另外,不解的地方是变量的存储位置。全局变量是不是可以理解为变量的一种全局属性,即和生存期有关,他有可能是外部的或者是静态的。
[解决办法]
C中的变量一次定义,在其它函数或文件中可多次说明。
第一点有问题,这个是跟生命期有关的,可以参考你的第二点。
其他的没什么问题。
[解决办法]
有几个小问题:
1.定义是告诉程序为此变量分配空间
>>>不是程序是编译器
3.关于static
>>>static也可修饰函数内部变量,表示初始化一次
5.变量存储位置
>>>包括静态存储区、栈、堆,这方面资料很多