void 不能代表乙個真實的變數
void 不能代表乙個真實的變數。
因為定義變數時必須分配記憶體空間,定義void 型別變數,編譯器到底分配多大的記憶體呢。 下面**都企圖讓void 代表乙個真實的變數,因此都是錯誤的**: void a; //錯誤
function(void a); //錯誤
void 體現了一種抽象,這個世界上的變數都是「有型別」的,譬如乙個人不是男人就是女 人(人妖不算)。
void 的出現只是為了一種抽象的需要,如果你正確地理解了物件導向中「抽象基類」的概 念,也很容易理解void 資料型別。正如不能給抽象基類定義乙個例項,我們也不能定義一 個void(讓我們模擬的稱void 為「抽象資料型別」)變數。 void 簡單吧?到底是「色」還是「空」呢?
return 關鍵字
return 用來終止乙個函式並返回其後面跟著的值。
return (val);//此括號可以省略。但一般不省略,尤其在返回乙個表示式的值時。 return 可以返回些什麼東西呢?看下面例子: char * func(void)
str 屬於區域性變數,位於棧記憶體中,在func 結束的時候被釋放,所以返回str 將導致錯誤。 【規則1-38】return 語句不可返回指向「棧記憶體」的「指標」,因為該內存在函式體結束時 被自動銷毀。
關鍵字 分節4(sizeof)
常年被人誤認為函式sizeof sizeof 是關鍵字不是函式,其實就算不知道它是否為32 個關鍵字之一時,我們也可以 借助編譯器確定它的身份。看下面的例子 int i 0 a sizeof int b sizeof i c sizeof int d sizeof i 毫無疑問,32 位系統下a b...
關鍵字 分節10(const)
const 關鍵字也許該被替換為readolny const 是constant 的縮寫,是恆定不變的意思,也翻譯為常量 常數等。很不幸,正是 因為這一點,很多人都認為被const 修飾的值是常量。這是不精確的,精確的說應該是唯讀 的變數,其值在編譯時不能被使用,因為編譯器在編譯時不知道其儲存的內容...
關鍵字 分節18(typedef)
有這樣乙個笑話 乙個獵人在河邊抓捕一條蛇,蛇逃進了水裡。過一會,乙個烏龜爬到岸邊。獵人一把抓住這個烏龜,大聲的說道 小樣,別你為你穿了個馬甲我就不認識你 了!typedef 關鍵字是個偉大的縫紉師,擅長做馬甲,任何東西穿上這個馬甲就立馬變樣。它可以把狼變成一頭羊,也能把羊變成一頭狼。甚至還可以把長著...