C语言中的变量
来源:互联网 发布:网络代工 编辑:程序博客网 时间:2024/04/30 00:56
从作用域来看:
1.全局变量 具有全局作用域,其他不包含全局变量定义的源文件需要用extern关键字再次声明就可以使用。
2.静态局部变量 具有局部作用域,一直到程序运行结束都存在,其与全局变量的区别是:全局变量对所有函数都可见,而静态局部变量只对定义自己的函数可见。
3.局部变量 只有局部作用域,它在程序运行期间不是一直存在,而是只在函数执行期间存在,函数的一次调用执行结束后,变量被撤销,其所占用的内存也被收回。
4.静态全局变量也具有全局作用域,它与全局变量的区别在于如果程序包含多个文件的话,它作用于定义它的文件里,不能作用到其它文件里,即被static关键字修饰过的变量具有文件作用域。这样即使两个不同的源文件都定义了相同名字的静态全局变量,它们也是不同的变量。
从分配内存空间看:
全局变量,静态局部变量,静态全局变量都在静态存储区分配空间,而局部变量在栈里分配空间。
1)静态变量会被放在程序的静态数据存储区(全局可见)中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。
2)变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。
Tips:
A.若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;
B.若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度;
C.设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题,因为他们都放在静态数据存储区,全局可见;
D.如果我们需要一个可重入的函数,那么,我们一定要避免函数中使用static变量(这样的函数被称为:带“内部存储器”功能的的函数)
E.函数中必须要使用static变量情况:比如当某函数的返回值为指针类型时,则必须是static的局部变量的地址作为返回值,若为auto类型,则返回为错指针。
- c 语言中的变量
- C语言中的变量
- C语言中的变量
- C语言中的变量
- C语言中的变量
- C语言中的变量
- C语言中的变量
- 关于C语言中的变量
- C语言中的变量类型
- C语言中的指针变量
- C语言中的bool变量
- C语言中的静态变量
- C 语言中的变量介绍
- c语言中的静态变量
- C语言中的bool变量
- C语言中的BOOL变量
- c语言中的常量,变量
- C语言中的变量声明
- UVa 10006 Carmichael Numbers 【快速幂+素数打表(埃氏筛法)】
- Android UI学习系列-ActionBar你最熟悉却又陌生的她(上篇)
- 一步一步教你实现仿百度搜索框下拉效果(上)
- Saliency Detection by Multi-Context Deep Learning 读后笔记
- 第一阶段的感想
- C语言中的变量
- hdu 5466 Clarke and expression(模拟)
- Android进程间通讯之messenger
- 系统开发技术栈
- Mybatis框架基础学习(三)
- 每日三个笑话-20151011
- 数据库部分
- cocos2d-x2.2.6项目在eclipse上搭建
- hdu 5479 Scaena Felix(水)