变量的概念 变量是什么意思

\u53d8\u91cf\u7684\u5b9a\u4e49\u662f\u4ec0\u4e48

\u53d8\u91cf\u6765\u6e90\u4e8e\u6570\u5b66\uff0c\u662f\u8ba1\u7b97\u673a\u8bed\u8a00\u4e2d\u80fd\u50a8\u5b58\u8ba1\u7b97\u7ed3\u679c\u6216\u80fd\u8868\u793a\u503c\u62bd\u8c61\u6982\u5ff5\uff0c\u4e5f\u662f\u5fae\u79ef\u5206\u7684\u57fa\u7840\u3002\u5728\u4e00\u4e9b\u8bed\u8a00\u4e2d\uff0c\u53d8\u91cf\u53ef\u80fd\u88ab\u660e\u786e\u4e3a\u662f\u80fd\u8868\u793a\u53ef\u53d8\u72b6\u6001\u3001\u5177\u6709\u5b58\u50a8\u7a7a\u95f4\u7684\u62bd\u8c61\uff08\u5982\u5728Java\u548cVisualBasic\u4e2d\uff09\u3002\u4f46\u53e6\u5916\u4e00\u4e9b\u8bed\u8a00\u53ef\u80fd\u4f7f\u7528\u5176\u5b83\u6982\u5ff5\uff08\u5982C\u7684\u5bf9\u8c61\uff09\u6765\u6307\u79f0\u8fd9\u79cd\u62bd\u8c61\uff0c\u800c\u4e0d\u4e25\u683c\u5730\u5b9a\u4e49\u201c\u53d8\u91cf\u201d\u7684\u51c6\u786e\u5916\u5ef6\u3002\u5176\u53d8\u91cf\u503c\u662f\u5b9a\u91cf\u7684\uff0c\u8868\u73b0\u4e3a\u6570\u503c\u5927\u5c0f\uff0c\u53ef\u7ecf\u6d4b\u91cf\u53d6\u5f97\u6570\u503c\uff0c\u591a\u6709\u5ea6\u91cf\u8861\u5355\u4f4d\u3002

变量的概念

变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。在指令式语言中,变量通常是可变的;但在纯函数式语言(如Haskell)中,变量可能是不可变(immutable)的。在一些语言中,变量可能被明确为是能表示可变状态、具有存储空间的抽象(如在Java和Visual Basic中);但另外一些语言可能使用其它概念(如C的对象)来指称这种抽象,而不严格地定义"变量"的准确外延。

变量的范围确定了能够知晓该变量存在的那部分代码。在一个过程内部声明变量时,只有过程内部的代码才能访问或改变那个变量的值;它有一个范围,对该过程来说是局部的。但是,有时需要使用具有更大范围的变量,例如这样一个变量,其值对于同一模块内的所有过程都有效,甚至对于整个应用程序的所有过程都有效。Visual Basic 允许在声明变量时指定它的范围。

存储类型
我们在程序中会经常定义一些变量来保存和处理数据。从本质上看,变量代表了一段可操作的内存,也可以认为变量是内存的符号化表示。当程序中需要使用内存时,可以定义某种类型的变量。此时编译器根据变量的数据类型分配一定大小的内存空间。程序就可以通过变量名来访问对应的内存了。

如果说变量的数据类型决定了对应内存的大小,那么存储类型则影响着对应内存的使用方式。所谓使用方式,具体说就是在什么时间、程序的什么地方可以使用变量,即变量的生命周期和作用域。

先了解一些基本常识。一、在程序运行时内存中有三个区域可以保存变量:静态存储区、栈(stack)和堆(heap)。二、根据变量定义的位置可分为全局变量(定义在函数体外的变量)和局部变量(定义在函数体内的变量,包括形参)。

所有的全局变量和静态局部变量(定义时使用关键字static)都保存在静态存储区,其特点是:在编译时分配内存空间并进行初始化。在程序运行期间,变量一直存在,直到程序结束,变量对应的内存空间才被释放。

而所有的非静态局部变量(又称为自动变量)保存在栈(stack)中,其特点是:在变量所在的函数或模块被执行时动态创建,函数或模块执行完时,变量对应的内存空间被释放。换句话说,函数或模块每被执行一次,局部变量就会重新被分配空间。如果变量定义时没有初始化,那么变量中的值是随机数。

所有用malloc分配的内存(又称为动态内存)都在堆(heap)中,其特点是:一般通过指针来访问动态分配的内存。即可以通过free来手动释放动态内存,也可以在程序结束时由系统自动释放。

以上讨论的是变量的生命周期,下面来看作用域。作用域指的是变量的可见范围,即在变量的生命周期内,程序的哪些部分可以使用该变量。

全局变量的作用域从定义点开始一直到源文件的结束。如果要在定义点之前使用全局变量的话就需要使用关键字extern对作用域进行扩展。全局变量缺省是可以被其他文件引用的。如果希望仅限于本文件使用的话,需要在定义时使用关键字static。

对于局部变量来说,无论是静态局部变量还是自动变量,作用域都仅限于定义该变量的函数或模块。

动态内存只要没有被释放就可以在程序的任何地方使用,前提是要知道动态内存的地址。

注:static加在全局变量前影响的是作用域,加在局部变量前影响的是生命周期。

  • 鍙橀噺鏄粈涔堟剰鎬
    绛旓細鐢ㄦ埛涔熷彲浠ュ垱寤鸿嚜宸辩殑鍙橀噺锛屼互渚垮瓨鏀剧▼搴忔墽琛岃繃绋嬩腑鐨勪复鏃舵暟鎹垨缁撴灉鏁版嵁绛夌瓑銆傚湪绋嬪簭涓紝杩欐牱鐨勫彉閲忔槸闈炲父闇瑕佺殑銆備笅闈㈠氨浠嬬粛杩欑被鍙橀噺鐨鍒涘缓鍜屼娇鐢ㄦ柟娉曘1锛庡彉閲忕殑鍛藉悕瑙勫垯 棣栧厛锛屾垜浠繀椤荤粰鍙橀噺鍙栦竴涓悎閫傜殑鍚嶅瓧锛屽氨濂藉儚姣忎釜浜洪兘鏈夎嚜宸辩殑鍚嶅瓧涓鏍凤紝鍚﹀垯灏遍毦浠ュ尯鍒嗕簡銆傚湪VB6涓紝鍙橀噺鐨勫懡鍚嶅繀椤婚伒寰互涓嬭鍒...
  • 鍙橀噺鏄粈涔堟剰鎬
    绛旓細鍙橀噺鏉ユ簮浜庢暟瀛︼紝鏄绠楁満璇█涓兘鍌ㄥ瓨璁$畻缁撴灉鎴栬兘琛ㄧず鍊兼娊璞姒傚康銆傚彉閲忓彲浠ラ氳繃鍙橀噺鍚嶈闂傚湪鎸囦护寮忚瑷涓紝鍙橀噺閫氬父鏄彲鍙樼殑锛涗絾鍦ㄧ函鍑芥暟寮忚瑷锛堝Haskell锛変腑锛屽彉閲忓彲鑳芥槸涓嶅彲鍙樼殑銆傚湪鏌愪簺璇█涓紝鍙橀噺鍙兘琚樉寮忓畾涔変负涓涓娊璞★紝鍏锋湁鍙互琛ㄧず鍙彉鐘舵佺殑瀛樺偍绌洪棿锛堝Java鍜孷isualBasic锛夛紱浣嗘槸鍏朵粬璇█...
  • 浠涔堝彨鍙橀噺,鎸囨爣,姒傚康
    绛旓細1銆佷笁鑰呬箣闂寸殑鑱旂郴 鍙橀噺鏄蹇电殑鍏蜂綋琛ㄨ堪鏂瑰紡锛屾蹇靛繀椤荤敤鍙橀噺鐨褰㈠紡鍙嶆槧銆傛娊璞$▼搴︿綆鐨勬蹇鍙互鐩存帴浣滀负鍙橀噺锛屾娊璞$▼搴﹂珮鐨勬蹇碉紝闇瑕侀氳繃涓濂楁寚鏍囨潵杩涜娴嬮噺銆傛寚鏍囨槸鍙橀噺鐨勭壒娈婂舰寮忋2銆佷笁鑰呬箣闂寸殑鍖哄埆锛氬惈涔変笉鍚 姒傚康鏄鐜拌薄鐨勬娊璞★紝瀹冩槸涓绫讳簨鐗╃殑灞炴у湪浜轰滑鍗炶涓婄殑鍙嶆槧銆傛蹇电殑鎶借薄绋嬪害涔熸湁楂樻湁浣庛
  • 浠涔堟槸鍙橀噺?
    绛旓細鐒惰岋紝鍦ㄥ嚱鏁板紡缂栫▼璇█濡侶askell涓紝鍙橀噺鐨勬蹇鏈夋墍涓嶅悓锛屽畠浠惧悜浜庝娇鐢ㄤ笉鍙彉鏁版嵁锛屽嵆涓鏃﹁祴鍊硷紝鍏跺煎氨涓嶈兘琚慨鏀广傝繖澧炲姞浜嗙▼搴忕殑纭畾鎬у拰鍙娴嬫с傚湪鍍廕ava鍜孷isual Basic杩欐牱鐨勯潰鍚戝璞¤瑷涓紝鍙橀噺鏄庣‘鍦板叧鑱旂潃瀵硅薄鐨勭姸鎬侊紝瀹冧滑浠h〃浜嗗瓨鍌ㄧ┖闂达紝鐢ㄤ簬璺熻釜瀵硅薄鐨勫睘鎬у拰琛屼负銆傝屽湪C璇█绛夊叾浠栬瑷涓紝...
  • 浠涔堟槸鍙橀噺?
    绛旓細浜哄彛銆侀熷害鍜屾俯搴︺傚畾閲忓彉閲忓彲浠ュ啀缁嗗垎锛岃繛缁瀷鍙橀噺:鍦ㄤ竴瀹氬尯闂村唴鍙互浠绘剰鍙栧,鍏舵暟鍊兼槸杩炵画涓嶆柇鐨,鐩搁偦涓や釜鏁板煎彲浣滄棤闄愬垎鍓,鍗冲彲鍙栨棤闄愪釜鏁板笺傚韬珮銆佺怀瀛愮殑闀垮害绛夈傜鏁e瀷鍙橀噺:鍊煎彧鑳界敤鑷劧鏁版垨鏁存暟鍗曚綅璁$畻,鍏舵暟鍊兼槸闂存柇鐨,鐩搁偦涓や釜鏁板间箣闂翠笉鍐嶆湁鍏朵粬鏁板,杩欑鍙橀噺鐨鍙栧间竴鑸娇鐢ㄨ鏁版柟娉曞彇寰椼
  • 甯搁噺鍜鍙橀噺鐨勬蹇
    绛旓細甯搁噺鍜鍙橀噺鐨勬蹇浠嬬粛濡備笅锛氬父閲:鍙互鐞嗚В涓轰竴鐩翠笉鍙樼殑閲忋傚父閲忓湪琚畾涔夊悗锛屽湪鑴氭湰鐨勫叾浠栦换浣曞湴鏂归兘涓嶈兘鏀瑰彉锛堝父閲忕敱鑻辨枃瀛楁瘝銆佷笅鍒掔嚎鍜屾暟瀛楃粍鎴愶紝浣嗘暟瀛椾笉鑳戒綔涓洪瀛楁瘝鍑虹幇锛夈傚彉閲忥細鏄寚鍦ㄧ▼搴忔墽琛岃繃绋嬩腑鏁板煎彲浠ュ彉鍖栫殑閲忋傚彉閲忛氳繃涓涓悕瀛楋紙鍙橀噺鍚嶏級鏉ヨ瘑鍒傜郴缁熶负绋嬪簭涓殑姣忎竴涓彉閲忓垎閰嶄竴涓瓨鍌ㄥ崟鍏...
  • 浠涔堟槸鍙橀噺,浠涔堟槸鑷彉閲?
    绛旓細鑷彉閲忥細鑷彉閲忔槸鎸囩爺绌惰呬富鍔ㄦ搷绾碉紝鑰屽紩璧峰洜鍙橀噺鍙戠敓鍙樺寲鐨勫洜绱犳垨鏉′欢锛屽洜姝よ嚜鍙橀噺琚湅浣滄槸鍥鍙橀噺鐨鍘熷洜銆傝嚜鍙橀噺鏈夎繛缁彉閲忓拰绫诲埆鍙橀噺涔嬪垎銆傚鏋滃疄楠岃呮搷绾电殑鑷彉閲忔槸杩炵画鍙橀噺锛屽垯瀹為獙鏄嚱鏁板瀷瀹為獙銆傚瀹為獙鑰呮搷绾电殑鑷彉閲忔槸绫诲埆鍙橀噺锛屽垯瀹為獙鏄洜绱犲瀷鐨勩傚湪蹇冪悊瀹為獙涓,鑷彉閲忔槸鐢卞疄楠岃呮搷绾点佹帉鎻$殑鍙橀噺銆傚湪...
  • 浠涔堟槸鍙橀噺 涓句緥璇存槑绂绘暎鍙橀噺鍜岃繛缁彉閲
    绛旓細鍙彉鐨勬暟閲忔爣蹇楀拰鎵鏈夌殑缁熻鎸囨爣绉板彉閲忋鍙橀噺鐨鏁板艰〃鐜扮О鍙橀噺鍊笺傚彉閲忔寜鍏舵暟鍊兼槸鍚﹁繛缁彲鍒嗕负绂绘暎鍙橀噺鍜岃繛缁彉閲忋傜鏁e彉閲忓湪娈靛尯闂村唴鍙换鎰忓彇鍊硷紝鑰岀鏁e彉閲忎竴鑸彧鑳藉彇鏁存暟鍗曚綅鍊笺傚宸ヤ汉鏁般佸伐鍘傛暟銆佹満鍣ㄥ彴鏁扮瓑鏄鏁e彉閲忥紱鑰岃韩楂樸佷綋閲嶃佸晢鍝侀攢鍞绛夋槸杩炵画鍙橀噺銆
  • ...鍙互涓惧嚭涓浜涙暟瀛﹂鐩緥瀛,杩樻湁鍙傛暟涓鍙橀噺鐨鍏崇郴
    绛旓細姣斿锛氭妸閾佺熆鐭虫彁鐐兼垚绾搧锛堢幇瀹炰腑涓嶅彲鑳斤紝鍚潅璐ㄧ殑锛夛紝鍏朵腑閾佸厓绱犵殑鍚噺灏辨槸甯搁噺锛屽洜涓洪櫎浜嗘彁鐐艰繃绋嬩腑鐨勬崯澶憋紝閾佸厓绱犲湪鏁翠釜鍙樺寲杩囩▼涓婚噺涓嶅彉銆傚啀姣斿锛氬湪鍑芥暟涓細y=-x-1涓紝-1灏辨槸甯搁噺锛屽畠瀵逛簬鍑芥暟鐨勫彉鍖栨墍浣滃嚭鐨勮础鐚绘槸涓瀹氱殑銆2銆鍙橀噺 鍙橀噺锛氬湪鏁板棰嗗煙涓紝鍙橀噺鎸囩殑鏄湪鍙樺寲鐨勫悇绉嶅叧绯讳腑浼...
  • 鍙橀噺鐨鍩烘湰姒傚康
    绛旓細鍙橀噺鐨鍩烘湰姒傚康涓哄彉閲忔潵婧愪簬鏁板锛屾槸璁$畻鏈鸿瑷涓兘鍌ㄥ瓨璁$畻缁撴灉鎴栬兘琛ㄧず鍊肩殑鎶借薄姒傚康銆傚彉閲忕畝浠嬶細鍙橀噺鏉ユ簮浜庢暟瀛︼紝鏄绠楁満璇█涓兘鍌ㄥ瓨璁$畻缁撴灉鎴栬兘琛ㄧず鍊肩殑鎶借薄姒傚康銆傚彉閲忓彲浠ラ氳繃鍙橀噺鍚嶈闂傚湪鎸囦护寮忚瑷涓紝鍙橀噺閫氬父鏄彲鍙樼殑锛涗絾鍦ㄧ函鍑芥暟寮忚瑷锛堝Haskell锛変腑锛屽彉閲忓彲鑳芥槸涓嶅彲鍙樼殑銆傚湪涓浜涜瑷涓紝鍙橀噺...
  • 扩展阅读:统计学四种变量类型 ... 变量的基本概念 ... 因变量和自变量的概念 ... 变量 数学名词 ... 编程中什么是变量 ... 自变量的概念 ... 变量举例 ... matlab变量定义 ... 什么叫变量和不变量 ...

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