http://bbs3.chinaunix.net/viewthread.php?tid=1631299這篇文章講到了C語言指標的理解,樓主雖然理解了指標,但是說話有點偏激,觀點不完全正確。
C語言中不僅不存在數群組類型,也不存在char, short, int, long, float, double等等這些類型,非要說C存在一種類型,那也可以說只有一種類型:記憶體段。何為記憶體段?就是一塊記憶體,暫時稱為raw_piece.
為什麼說C是一種無類型或者弱類型的語言?因為我們的電腦對待記憶體就是無類型的。
進階語言中的類型,可以在運行時取得該類型對象的屬性,比如長度、元素個數等等,因為這些屬性儲存在了對象本身內部。
在C中,我們可以用struct來構造類似進階語言的這種資料類型。
在物件導向的進階語言中,一直無法完美的統一類類型 (class)和內建類型(整形,浮點型等),只好採取打包(box)和解包(unbox)等特殊方法來在必要時把內建類型封裝成類類型,在不需要時再還原回來。。。
其實這有必要嗎?我們有必要定義那麼多複雜的類型規則嗎?我們的語言,應該像C, 就一種類型:raw_piece,你想要什麼樣的類型,都可以從raw_piece構造出來。比如raw_piece(1)當作字元型,raw_piece(4)當作整形,raw_piece(sizeof(struct.....))當作複雜類型。。。。當然,函數庫可以預先構造一些經常用到的類型,以方便使用。
我們的程式設計語言應該簡潔,我們的世界應該簡單,整個宇宙說不定只有一個定理。。愛因斯坦晚年曾經想把宇宙中的4種力(強力、弱力、電磁力和萬有引力)統一成一種,這就是一種追求簡單的境界。
我認為C語言還是過於複雜,C99中引入的一些現代特性根本沒有必要,完全可以通過重新定義C的某些特性,通過修改庫函數的定義,在不改變語言介面得情況下來滿足現代需要
C需要的是一個更多功能的函數庫,,只需把現在進階語言種常用的類型、特性、功得能等也納入C的標準庫,那就完全可以取代當今大部分新的語言。C是通過庫函數來擴充其功能的,這個設計理念相當優秀!
現摘要有關評論如下
1.C語言的數組名不是指標,說它代表一個地址更準確些。sizeof數組名的時候可以得到數組大小
2.c是弱類型,c++強型別