C语言中变量的存储类型有哪几种,存储方式哪几种?谢喽

在C语言中,对变量的存储类型说明有以下四种:

1、auto  自动变量

2、register  寄存器变量

3、extern  外部变量

4、static  静态变量

所谓存储类型是指变量占用内存空间的方式,也称为存储方式。

变量的存储方式可分为“静态存储”和“动态存储”两种。

1、静态存储变量通常是在变量定义时就在存储单元并一直保持不变,直至整个程序结束。

2、动态存储变量是在程序执行过程中,使用它时才分配存储单元,使用完毕立即释放。典型的例子是函数的形式参数,在函数定义时并不给形参分配存储单元,只是在函数被调用时,才予以分配,调用函数完毕立即释放。

如果一个函数被多次调用,则反复地分配、释放形参变量的存储单元。从以上分析可知,静态存储变量是一直存在的,而动态存储变量则时而存在时而消失。

扩展资料:

变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域。

一、从作用域看:

1、全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量的定义的源文件需要用extern关键字再次声明这个全局变量。

2、静态局部变量具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束一直存在,它和全局变量的区别在于全局变量对所有函数都是可见的,而静态局部变量只对定义自己的函数体始终可见。

3、局部变量也只有局部作用域,它是自动对象(auto),它在程序运行期间不是一直存在,而是只在函数执行期间存在,函数的一次调用执行结束后,变量被撤销,其所占用的内存也被收回。

4、静态全局变量也具有全局作用域,它与全局变量的区别在于如果程序包含多个文件的话,它作用于定义它文件里,不能作用到其他文件里,即被static关键字修饰过的变量具有文件作用域。这样即使两个不同的源文件都定义了相同名字的静态全局变量,它们也是不同的变量。

二、从分配空间看:

全局变量,静态局部变量,静态全局变量都在静态存储区分配空间,而局部变量在栈里分配空间。

全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。

而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一个源程序的其他源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其他源文件中引起错误。

1、静态变量会放在程序的静态数据存储区(全局可见)中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。

2、变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。

参考资料来源:百度百科-变量-存储类型



  • C璇█涓殑鏁版嵁绫诲瀷鍖呮嫭鍝簺?
    绛旓細C璇█涓殑鏁版嵁绫诲瀷鍖呮嫭鍩烘湰鏁版嵁绫诲瀷鍜岀粍鍚堟暟鎹被鍨嬨傚熀鏈暟鎹被鍨嬪寘鎷細1. 鏁村瀷锛歩nt銆乻hort銆乴ong銆乴ong long 2. 娴偣鍨嬶細float銆乨ouble銆乴ong double 3. 瀛楃鍨嬶細char 4. 甯冨皵鍨嬶細_Bool 缁勫悎鏁版嵁绫诲瀷鍖呮嫭锛1. 鏁扮粍绫诲瀷锛氬彲浠瀛樺偍鐩稿悓绫诲瀷鐨勪竴缁勬暟鎹 2. 缁撴瀯浣撶被鍨嬶細鍙互瀛樺偍涓嶅悓绫诲瀷鐨勪竴缁勬暟鎹 3...
  • 鍦C璇█涓,鍙湁鍦ㄤ娇鐢ㄦ椂鎵嶅崰鐢ㄥ唴瀛樺崟鍏鐨勫彉閲,鍏瀛樺偍绫诲瀷鏄( )銆
    绛旓細銆愮瓟妗堛戯細A A銆傘愯В鏋愩戝姩鎬鍙橀噺(auto)瀛樺偍鍦ㄥ唴瀛樹腑鐨勫姩鎬佸瓨鍌ㄥ尯锛屽彧鍦ㄧ▼搴忚繍琛屼腑锛岀郴缁熸墠涓存椂缁欏彉閲忓垎閰嶅唴瀛樺崟鍏冿紱鍏ㄥ眬鍙橀噺(extern)涓缁忓畾涔夛紝绯荤粺涓哄叾鍒嗛厤鍥哄畾鐨勫唴瀛樺崟鍏冿紱闈欐佸彉閲(static)锛岀紪璇戠郴缁熶负鍏跺垎閰嶅浐瀹鐨勫瓨鍌绌洪椈锛涘瘎瀛樺櫒鍙橀噺(register)涓嶄繚瀛樺湪鍐呭瓨涓婏紝鑰屾槸鐩存帴瀛樺偍鍦–PU鐨勫瘎瀛樺櫒涓
  • C璇█涓殑鑷姩鍙橀噺鍜屽瘎瀛樺櫒鍙橀噺鏄粈鑾?
    绛旓細C璇█瀛︿範涔嬪彉閲忓瓨鍌 C璇█涓鍙橀噺鐨勮鏄庡寘鎷袱鏂归潰鐨勫唴瀹癸細鍙橀噺绫诲瀷浠ュ強鍙橀噺鐨勫瓨鍌ㄧ被鍨銆傚彉閲忕被鍨嬪锛歩nt锛堟暣褰級锛宑har锛堝瓧绗﹀瀷锛夋槸鐢ㄦ潵璇存槑鍙橀噺鎵鍗犵敤鐨勫唴瀛樼┖闂寸殑澶у皬銆傚彉閲忓瓨鍌ㄧ被鍨嬬敤鏉ヨ鏄庡彉閲忕殑浣滅敤鑼冨洿銆C璇█鐨勫彉閲忓瓨鍌ㄧ被鏈锛氳嚜鍔ㄧ被銆佸瘎瀛樺櫒绫汇侀潤鎬佺被鍜屽閮ㄧ被銆傚叧閿瓧auto鍔犲湪鍙橀噺鍚嶅強鍏剁被鍨嬪墠锛...
  • C璇█鍙橀噺瀹氫箟char銆乮nt銆乴ong鏈変粈涔堝尯鍒?
    绛旓細1銆乧har 鍦ㄦ墍鏈夋満鍣ㄤ笂閮芥槸鍗犱竴涓瓧鑺傦紝鏈夌鍙锋暟鑼冨洿鏄-128鍒127锛屼竴鑸敤鏉ヨ〃绀哄瓧绗︺傚瓧绗﹀湪瀛樺偍涓氨鏄瀛樺偍鐨ascii鍊笺2銆乮nt 鍦16浣嶆満涓婂崰2瀛楄妭锛岀幇鍦ㄥ熀鏈病鏈変簡銆 鍦32|64浣嶆満涓婂崰鍥涘瓧鑺傦紝鏈夌鍙锋暟鑼冨洿鏄-2^31鍒2^31-1銆3銆乴ong 鍦32浣嶇紪璇戠郴缁熶笅鍗4瀛楄妭锛屼笌int鐩稿悓銆傚湪64浣嶇郴缁熶笅鍗8...
  • c璇█鍥涚鍩烘湰鏁版嵁绫诲瀷
    绛旓細瀹炲瀷甯搁噺鍙堢О瀹炴暟鎴栨诞鐐规暟銆傚湪C璇█涓鍙互鐢ㄤ袱绉嶅舰寮忚〃绀轰竴涓疄鍨嬪父閲忋3銆佹暣鍨嬩綘鍙互鐞嗚В涓烘暣鏁帮紝鏁村瀷鐨勫彉閲鏄病鏈夊皬鏁扮偣鐨勶紝瀹炲瀷鏄湁灏忔暟鐐圭殑銆備笉鏄疄鍨嬪寘鍚暣鍨嬶紝瀹炲瀷鍜屾暣鍨嬫槸涓嶅悓鐨绫诲瀷锛屽畠浠湪鍐呭瓨涓鐨勫瓨鍌鏂瑰紡鏄笉鍚岀殑銆備緥濡傦細5灏辨槸鏁村瀷甯搁噺锛0灏辨槸瀹炲瀷甯搁噺銆
  • C璇█鐨鏁版嵁绫诲瀷鍒嗕负鍑犵?
    绛旓細short銆乮nt銆乴ong銆乧har銆乫loat銆乨ouble 杩欏叚涓叧閿瓧浠h〃C 璇█閲岀殑鍏鍩烘湰鏁版嵁绫诲瀷銆傚湪涓嶅悓鐨勭郴缁熶笂锛岃繖浜涚被鍨嬪崰鎹殑瀛楄妭闀垮害鏄笉鍚岀殑锛氬湪32 浣嶇殑绯荤粺涓 short 鍗犳嵁鐨勫唴瀛樺ぇ灏忔槸2 涓猙yte锛沬nt鍗犳嵁鐨勫唴瀛樺ぇ灏忔槸4 涓猙yte锛沴ong鍗犳嵁鐨勫唴瀛樺ぇ灏忔槸4 涓猙yte锛沠loat鍗犳嵁鐨勫唴瀛樺ぇ灏忔槸4 涓猙yte锛沝ouble鍗犳嵁...
  • C璇█涓char鍜宨nt鏈変粈涔堝尯鍒?
    绛旓細C璇█涓 char 涓 int 鍏蜂綋鍖哄埆濡備笅锛1銆佽〃绀鐨勫彉閲忕被鍨涓嶅悓锛歝har 鏄瓧绗﹀彉閲忥紝鑰 int 鏄暣鍨嬪彉閲忋2銆佺敵璇鐨勭被鍨鏁版嵁涓嶅悓锛歝har 鐢ㄦ潵鐢宠瀛楃鍜屽瓧绗︿覆鎴栬呭瓧绗︿覆鎸囬拡锛沬nt 鐢ㄦ潵鐢宠鏁村瀷鏁版嵁锛屾垨鑰呮暣褰㈡暟鎹寚閽堛3銆佸瓧鑺傘佽兘琛ㄧず鐨勫唴瀹逛笉鍚岋細char鍙湁涓涓瓧鑺傦紝int鏈4涓瓧鑺傦紝鑳借〃绀虹殑鍐呭澶у皬涓嶄竴鏍...
  • C璇█涓鏈垵濮嬪寲鐨勫彉閲忕殑鍊兼槸0涔
    绛旓細鍏ㄥ眬鍙橀噺 銆侀潤鎬佸彉閲忓垵濮嬪间负0锛屽眬閮ㄥ彉閲忥紝鑷姩鍙橀噺鍒濆鍊奸殢鏈哄垎閰嶃傚畾涔夊眬閮ㄥ彉閲忥紝鍏跺疄灏辨槸鍦ㄦ爤涓氳繃绉诲姩鏍堟寚閽堟潵缁欑▼搴忔彁渚涗竴涓唴瀛樼┖闂村拰杩欎釜灞閮ㄥ彉閲忓悕缁戝畾銆傚洜涓鸿繖娈靛唴瀛樼┖闂村湪鏍堜笂锛岃屾爤鍐呭瓨鏄弽澶嶄娇鐢ㄧ殑锛屾墍浠ヨ浣跨敤鏍堟潵瀹炵幇鐨勫眬閮ㄥ彉閲忓畾涔夋椂濡傛灉涓嶆樉寮忓垵濮嬪寲锛屽煎氨鏄0鐨勩傚叏灞鍙橀噺閾炬帴鏃跺凡鍒嗛厤...
  • C璇█鏁村瀷鍙橀噺鍜屽疄鍨鍙橀噺鐨鍖哄埆
    绛旓細鏁村瀷鍙橀噺鍙兘瀛樺偍鏁村瀷鏁版嵁锛屼笉鍚岀被鍨鐨勫彉閲瀛樺偍鏁板肩殑鑼冨洿涓嶅悓锛屾暣鍨鍙橀噺鐨勫瓨鍌ㄧ被鍨涓昏鏈夛細鐭暣鍨媠hort锛堝崰2瀛楄妭锛夛紝鍩烘湰鏁村瀷int锛堝崰4瀛楄妭锛夛紝闀挎暣鍨媗ong锛堝崰4瀛楄妭锛夌瓑锛涘疄鍨鍙橀噺瀛樺偍鏁版嵁鐨勮寖鍥磋緝骞匡紝椤惧悕鎬濅箟鏄疄鏁帮紝褰撶劧鏁存暟涔熸槸瀹炴暟锛屼篃鑳藉瓨鍌ㄣ傚疄鍨嬪彉閲忕殑瀛樺偍绫诲瀷涓昏鏈夛細鍗曠簿搴︽诞鐐瑰瀷float锛堝崰4...
  • 鍦C璇█涓殑瀹炲瀷鍙橀噺鍒嗕负2绉嶇被鍨,瀹冧滑鏄()鍜()
    绛旓細C璇█鎻愪緵鐨勫疄鍨鍙橀噺鏈涓ょ绫诲瀷锛氬崟绮惧害锛坒loat锛夊拰鍙岀簿搴︼紙double锛夈傚崟绮惧害鏁版槸鎸囪绠楁満琛ㄨ揪瀹炴暟杩戜技鍊肩殑涓绉嶆柟寮忋俈B涓璖ingle锛堝崟绮惧害娴偣鍨嬶級鍙橀噺瀛樺偍涓 IEEE 32 浣嶏紙4 涓瓧鑺傦級娴偣鏁板肩殑褰㈠紡锛屽畠鐨勮寖鍥村湪璐熸暟鐨勬椂鍊欐槸浠 -3.402823E38 鍒 -1.401298E-45锛岃屽湪姝f暟鐨勬椂鍊欐槸浠 1.401298E-45...
  • 扩展阅读:扫一扫题目出答案 ... c#数据类型有哪几种 ... c的存储类别有哪四种 ... 变量的类型分为哪三种 ... 变量的存储类型有几种 ... c语言的四种存储方式 ... 存储类型有哪些c语言 ... c语言四个基本类型 ... 变量的四种存储类型 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网