[C++] 變數

 [Q]人類與電腦怎麼記東西的?

•  大腦某些區域的神經元神經元網路產生變
•  越複雜的東西要花越久的時間去記憶

•  電腦的記憶體某些區域的位元某些位元產生變化
•  越複雜的東西要花越大的空間去記憶

•  那個東西叫作「變數」(variables)
•  因此一個變數會有以下三種資訊 (變數三要素)
• 「資料型別」 (data types) : 不同類型的資料要花費的記憶體空間大小不同。
• 「變數名稱」 (id) :用來稱呼該變數 。
• 「記憶體位置」(address):記在記憶體的哪裡 。

資料型別

•  bool 布林值 ( Boolean ) ( 只有2種可能( true or false ),大小為1 bit )
•  char 字元 ( character ) (almost all 8 bits = 1 byte  -- ASCII centric )
•  整數 ( integer ) :
    •  short 短整數 ( usually  16  bits =  2 bytes ;  could be same as int )
    •  int 整數 ( at least 16 bits, usually 32 bits = 4 bytes )
    •  long 長整數 ( usually 32 or 64  bits ; could be same as  int = 4 bytes )
    •  long long 長整數 ( 8 bytes )
•  浮點數 ( floating point ) :
    •  float 單精確度浮點數 ( usually 32 bits = 4 bytes , could be same as double )
    •  double 雙精確度浮點數 ( at least 32 bits ; usually 64 bit = 8 bytes )
    •  可以利用 sizeof() 運算子得到變數或型別的大小 ( 也可以得變數大小 )
•  例:cout  <<  sizeof ( int ) << endl ;
•  可以記最多的型別:long double ( 16 bytes )

變數名稱

 • "Identifier" ( ID ) = 使用者自己定義的名字
     •  在同個 scope 下不能重複
 •  有效 ID ( Valid identifiers ):
     •  以英文字母或底線 ( underscore  (_) ) 開頭
     •  後接任意數字、字母、底線
 •  大小寫敏感 (case - sensitive)
      •  "sum" 跟 "Sum" 不同名稱
 •  不可以用數字開頭

變數宣告

•  變數必須先宣告才可使用!( 先告訴電腦需要多大的記憶體空間(利用資料型別),
   電腦會幫你找到一個這麼大的空間,並保留該空間給你存放這個變數,尚未給初始值 )

•  型式:type name ;
•  Example:
    •  int num ;
    •  float pi ;
    •  char ch ;
    •  bool isDead ;

 •  可同時宣告多個變數 ( 以逗號分隔 )
 •  Examples:
     •   int i , j , k ;
     •   float f , g , h ;

變數的能見度 (Scope) 與生存時間 (Lifetime)

•  Scope: 從宣告那行到遇到自己那層的右大括號為止。

•  Lifetime: 看記憶體位置而定
    •  堆積 (heap):
        •  程式開始執行到程式終止 ( global variables, static local, ... )
        •  new 到 delete ( 動態 )
    •  堆疊 (stack):
        •  從宣告那行到遇到自己那層的右大括號為止。( local variables , parameters ... )




留言

熱門文章