學C++再談變量

概述


   變量來源於數學,是計算機語言中能儲存計算結果或能表示值抽象概念。變量可以通過變量名訪問。在指令式語言中,變量通常是可變的;但在純函數式語言(如Haskell)中,變量可能是不可變(immutable) 的。在一些語言中,變量可能被明確爲是能表示可變狀態、具有存儲空間的抽象(如在Java和Visual Basic中);但另外一些語言可能使用其它概念(如C的對象)來指稱這種抽象,而不嚴格地定義“變量”的準確外延。


命名,定義


    變量,這個詞對於我們編程人員來說是再熟悉不過的了,不論它在什麼編程語言裏都會存在,而且本質都是相同的,唯一不同的就是他們的命名規則,定義形式,大同小異。在C++,C# ,Java中定義格式基本一致,爲:數據類型 變量名;或 數據類型  變量名= 初值;C++中特有的格式:數據類型 變量名(初值);而在VB中有些不同的是:變量名  as  數據類型  。


作用域


   說到變量,作用域是我們不得不談的。關於它們的作用域在C++中因爲繼承了C語言的語言風格,所以是以定義的位置不同來區分的,可分爲文件作用域,函數作用域,塊作用域和函數原型作用域,其中文件作用域屬於全局作用域,其他三者均爲局部作用域。而在VB中是以關鍵字和定義的位置來共同決定的,在過程變量以關鍵字Dim 或Static來定義,模塊變量要在模塊的變量聲明部分已關鍵字dim 或private來定義,而全局變量則在模塊聲明部分以Public關鍵字來定義。


聲明週期


   從空間上我們以作用域描述了變量,那現在我們再來從時間上看看變量,從時間方面來描述變量,在編程語言裏統稱爲變量的生命週期。當然了因語言的不同,稱呼,叫法有些大同小異,在C++中叫做變量的存儲類型,分爲auto型,Register型,extern型,static型。auto是定義局部的動態變量的,默認省略。Register是寄存器變量,是沿用C語言中的,在高級編程中很少用。Extern是配合全局變量定義的,是全局變量的擴展聲明。Static是靜態變量,在大部分編程語言中基本都相同。而在VB中聲明週期是以Dim定義動態變量,Static來定義靜態變量的。

    談到變量時,往往我們都會聯想到與它相對應的常量,下面我們來看看在C++中關於常量的定義。在C++中常量分爲數值常量,符號常量,和常變量。


常量

    在C++中數值常量的使用和其他語言中的沒有什麼區別,在這裏就不贅述了。我們主要來看看符號常量和常變量的定義。

符號常量

   在C++中符號常量的定義和其他的編程語言中有很大的區別,在C++中符號常量是以預處理命令來處理的。格式爲:#define 符號常量名數值  ,如:#define  PI  3.14。注意:因爲符號常量的定義是預處理命令,所以定義符號常量是切記不能用賦值符號,且不以分號結尾。如:#define  PI  = 3.14  和 #define  PI  3.14;都是錯誤的。

常變量

    在C++中常變量的定義格式與變量類似,格式:const  數據類型  符號常量名  =  數值;其中Const 和數據類型的位置是可以調換的。它 和變量不同的是在定義時必須在前加Const併爲其賦值,並且在程序中一旦爲其賦值不可更改,所以被稱爲常量。其實C++中的常變量就是VB中的符號常量,雖然爲常量但是和數值常量,符號常量有着本質的不同,C++或其他的編程語言中普通常量在指令中是不佔內存單元的,但是C++中的常變量(VB中的符號常量)是要佔內存單元的,實質是一種特殊的,內存單元中值固定不變的一種變量,本質也是一個內存單元。唯一和變量不同的是它的值在程序中是固定不變的。


發佈了48 篇原創文章 · 獲贊 10 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章