1.什麼是變數?
(1)其值在其作用域內可以改變的量成為變數。
(2)乙個變數應該有乙個名字,在記憶體中佔據一定的儲存空間。
(3)變數在使用前必須要定義,每個變數都有自己的位址。
2.變數名和變數值區別是什麼?
變數名是在變數的宣告的時候,該名字就和記憶體中一塊位址繫結在一起了。可以通過變數名直接找到對應的記憶體區域,也可以通過位址找到其記憶體區域。
變數的值是變數所對應的記憶體區域內存放的二進位制序列。變數的值不會因為變數的型別發生了改變而改變,當變數被轉換為對應型別時,記憶體區域的二進位制序列以該型別的形式翻譯出來。這也是強制型別轉換能夠成立的原因。
3.區域性變數和全域性變數的區別是什麼?
區域性變數也稱為內部變數,區域性變數是在函式內作定義說明的,其作用域僅限於函式內,離開該函式後使用這種變數是非法的。
全域性變數也稱外部變數,它是在函式外部定義的變數,他不屬於那乙個函式,它屬於乙個源程式檔案,其作用域是整個源程式。
4.void兩種意思?
void可以表示沒有資料(沒有結果、沒有形式引數),也可以表示某種任意型別的資料(如又與指標結合,用void*標記)。void表示空型別,void* 表示任意資料的指標型別,程式如要使用void*型別資料,應該將它強制地轉換成某種具體的指標型別。
5.什麼是宣告?什麼是定義?他們之間的區別是什麼?
宣告是引入識別符號和識別符號的型別(型別可以是整形,函式,浮點型等)。宣告也可理解為是讓編譯器知道有這麼個識別符號,方便以後引用。
定義實際是例項代(或實現)識別符號。可為識別符號分配儲存空間,還可為識別符號指定初始值。
定義可以代替宣告,因為在定義的時候我們也指定了識別符號和型別。但所有識別符號只能有一次定義,而宣告可以有多次。
6.static和extern的區別?
全域性變數是不顯示用static修飾的全域性變數,全域性變數預設是有外部鏈結性的,作用域是整個工程,在乙個檔案內定義的全域性變數,在另乙個檔案中,通過extern 全域性變數名的宣告,就可以使用全域性變數。
全域性靜態變數是顯式用static修飾的全域性變數,作用域是宣告此變數所在的檔案,其他的檔案即使用extern宣告也不能使用。
7.const的作用?
(1)可以定義const常量,具有不可變性。
(2)便於進行型別檢查,使編譯器對處理內容有更多了解,消除了一些隱患。
(3)可以避免意義模糊的數字出現,同樣可以很方便地進行引數的調整和修改。
(4)可以保護被修飾的東西,防止意外的修改,增強程式的健壯性。
(5) 為函式過載提供了乙個參考。
(6) 可以節省空間,避免不必要的記憶體分配。
(7) 提高了效率。
8.如何使用auto?
這個關鍵字用於宣告變數的生存期為自動,即將不在任何類、結構、列舉、聯合和函式中定義的變數視為全域性變數,而在函式中定義的變數視為區域性變數。
9.typedef
(1)常規變數型別定義
(2)指標型別定義
(3)陣列型別定義
(4)函式位址說明
(5)函式宣告
(6)函式指標
10.列舉與#define的區別?
(1)#define 巨集常量是在預編譯階段進行簡單替換,列舉常量則是在編譯的時候確定其值。
(2)一般在編譯器裡,可以除錯列舉常量,但是不能除錯巨集常量。
(3) 列舉可以一次定義大量相關的常量,而#define 巨集一次只能定義乙個。
Report Service 中資料型別的問題
最近遇到個問題,頭都給搞大了.在report service2000中做個報表,其實有乙個資料字段是小數 二數除的結果 最後要顯示為百分比的.自己取出資料顯示出來,一點問題都沒有.但是report 一呼叫,就會顯示出錯誤的資料了.比如真的資料為0.25,但到報表中卻顯示為12.5 找來找去卻找不到原...
js的基本資料型別和引用資料型別的相關問題
一 字面量的賦值問題 var a 1 var b a console.log a 1 b 2 console.log a 1 console.log b 2var b a 時,建立了乙個新的記憶體位址儲存變數b和值,所以修改b的值不會影響a的值。二 引用資料型別 var obj console.lo...
資料型別基礎資料型別
資料型別 基礎型別 除八大基礎型別其他的都是引用型資料型別 引用資料型別 基礎資料型別 整型 byte 佔乙個位元組,範圍 128 127 short 佔兩個位元組,範圍 32768 32767 int 最常用 佔四個位元組,範圍 2147483648 2147483647 long 佔八個位元組 ...