变量的存储类别分有自动(动态),静态,寄存器和外部四种。
- auto 自动变量
- static 静态存贮分配变量(又分为内部静态和外部静态)
- extren 外部变量/全程变量(用于外部变量说明)
- register 寄存器变量 (用于在硬件寄存器中)
四大类所有变量必须先说明(定义),后使用。
自动(动态)变量:
函数中的局部变量不加static关键字修饰就是动态变量。每次调用该函数的时,系统会给它分配存储空间,该函数调用结束释放其存储空间,及动态变量每次被调用都会被赋初值。
静态变量:
全局变量都是静态变量,函数中的局部变量加static关键字也是静态变量,格式为: static + 类型名 + 变量名 。多次调用该函数,只有第一次调用会赋初值,其余调用时,其值都是在上次调用该函数执行结束后的值。
外部变量:
在函数外部定义的变量即为外部变量,它的作用域是整个程序(全程变量)。
C程序可以分别放在几个文件上,每个文件可以作为一个编译单位分别进行编译。外部变量只需在某个文件上定义一次,其他文件若要引用此变量时,应用Extern加以说明(外部变量定义时不必加extern关键字)。
在同一文件中,若前面的函数要引用后面定义的外部(在函数之外)变量时,在函数里加extern加以说明。
引进外部变量的原因:解决函数单独编译的协调;与变量初始化有关;外部变量的值是永久的;解决数据共享;
注意:函数本身也被认为是外部变量
寄存器变量:
只有自动(局部)变量和函数参数才能进一步指定为寄存器存贮类
使用register变量可以提高存取速度,但寄存器变量的数目依赖于具体机器,声明多了也只有前几个有效。
只限于int,char,short,unsigned和指针类型用于寄存类。
不能对register变量取地址(即&操作)
标签:调用,函数,外部,C语言,静态,寄存器,变量 来源: https://blog.csdn.net/weixin_46309058/article/details/122042561
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。