永发信息网

c语言中,变量的定义

答案:1  悬赏:20  手机版
解决时间 2021-06-08 11:28
c语言中,变量的定义
最佳答案
变量
在将变量前,先解释一下声明和定义这两个概念。声明一个变量意味着向编译器描述变量的类型,但并不为变量分配存储空间。定义一个变量意味着在声明变量的同时还要为变量分配存储空间。在定义一个变量的同时还可以对变量进行初始化。
局部变量通常只定义不声明,而全局变量多在源文件中定义,在头文件中声明。
局部变量
在一个函数的**定义的变量是**变量,它只在本函数范围内有效。
自动变量auto
函数中的局部变量,其缺省格式是自动变量类型。例如,在函数体中int b, c=3; 和auto int b, c=3; 是等价的。
自动变量是动态分配存储空间的,函数结束后就释放。自动变量如不赋初值,则它的值是一个不确定的值。
静态局部变量static
静态局部变量是指在函数体内声明和定义的局部变量,它仅供本函数使用,即其他函数不能调用它。静态局部变量的值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次函数调用时,该变量已有值,就是上一次函数调用结束时的值。
静态局部变量在静态存储区分配存储单元,在程序的整个运行期间都不释放。静态局部变量是在编译时赋初值的,即只赋初值一次。
在sdt编译器中,建议对静态局部变量赋初值,否则该静态局部变量的初值为不确定值。在其他编译器中,未初始化的静态局部变量的初值可能为零,这由具体的编译器所决定,使用前最好测试一下。
寄存器变量register
带register修饰符的变量暗示(仅仅是暗示而不是命令)编译程序本变量将被频繁使用,如果可能的话,应将其保留在cpu的寄存器中,以加快其存取速度。
对于现有的大多数编译程序,最好不要使用register修饰符。因为它是对早期低效的c编译程序的一个很有价值的补充。随着编译程序技术的进步,在决定哪些变量应当被存到寄存器中时,现在的c编译程序能比程序员做出更好的决定。
全局变量
在函数之外定义的变量称为外部变量,外部变量是全局变量,它可以为本文件中其他函数所共用。全局变量都是静态存储方式,都是在编译时分配内存,但是作用范围有所不同。
静态外部变量static
静态外部变量只能在本文件中使用。所以静态外部变量应该在当前源文件中声明和定义。
外部变量extern
定义函数中的全局变量时,其缺省格式是外部变量类型。外部变量应该在一个头文件中声明,在当前源文件中定义。外部变量允许其他文件引用。
下例声明了一个变量和一个结构,定义了两个变量,其中一个定义带初始化:
extern int decl1; // this is a declaration
struct decl2
{
int member;
}; // this just declares the type – no variable mentioned
int def1 = 8; // this is a definition
int def2; // this is a definition


我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
白居易写的白雪诗词,描写端午的诗句 古诗
有图有真相第19~20题20题补充:导线MN时,圆
丑五笔什么打,丑字的五笔怎么打
红叶诗词,红叶好花不好的古诗词
好男人是不会让心爱的女人受一点点伤 英语怎
she----a letter just now.怎么填?just now
描写夏末秋初的句子,跪求:谁有《教父》2,3
高一物理、v-t图像中位移等于面积,为什么这是
2009年5月16日用天干地支怎么表示
驾照体检多久可以拿到,c1驾照拿到手要多长时
今年七月下旬厦门可能出现台风吗?出现台风一
紫罗兰监狱怎么进去,怎么从紫罗兰监狱里出来
非法种植**数量超过多少株,需要追究刑事责任
地下城怎么快速赚金币,dnf怎么跨区转金币
动物的运动方式与他们的生活环境有什么关系?
推荐资讯
含有风的诗句小学,含有春字的诗句100首
霸气的古风帝王句子,描述帝王的古诗词
雨水像什么流成一条河,雨水顺着房梴流下来像
爱情表白最感动的句子,什么是兄弟 经典语录
某同学给试管里的液体加热,实验结束后发现试
蝉的生命意义是什么?用龚自珍的两句诗莱形象
写1篇旅游景点的作文400百字左右,公园也可以
眼药水晚点用会怎样?
中国人口老龄化加快的原因是什么?
饲养小动物会给孩子带来哪些好处呢?
什么人读法国的法字读四声
存在歌词表达什么意思,那英的'默'这
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?