| 導購 | 订阅 | 在线投稿
分享
 
 
當前位置: 王朝網路 >> c/c++ >> C/C++編程新手錯誤語錄(續二)
 

C/C++編程新手錯誤語錄(續二)

2008-06-01 02:04:53  編輯來源:互聯網  简体版  手機版  評論  字體: ||
 
 
  前文回顧:C/C++編程新手錯誤語錄 錯誤語錄(續一)(13)「整型變量僅僅意味著一個整數」

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  當我們還是一個新手,看整型就是整數;

  當我們成爲高手,看什麽都是整型。

  整型,在所有C/C++基本數據類型中最富有藝術魅力和奇幻色彩。

  我們從某聞名論壇的一篇帖子開始一窺整型的奧妙。

  問:Vxworks操作系統啓動一個任務的函數是taskSpawn(char* name, int PRiority, int options, int stacksize, FUNCPTR function, int arg1,.. , int arg10),它只接受整型參數,我該怎麽辦才能給它傳一個結構體(在32位PowerPC平台下)?

  答:可以傳入結構體的指針,在32位PowerPC平台下,指針本質上就是一個32位整數,在函數體內將整型強制轉化爲結構體指針就可訪問結構體的每一個元素。

  如:

  //啓動任務1

  taskSpawn(「task1」, 180, NULL, 10000, Task1Fun, &pStrUCtAr,0,0,0,0,0,0,0,0,0);

  //task1函數

  Task1Fun ( int arg1 )

  {

  struct_x * pStructx = (struct_x *) arg1; //將整型強制轉化爲結構體指針

  …

  }

  在此提出「泛整型」的概念,(unsigned)char、(unsigned)short int、(unsigned)int、(unsigned)long int等都屬于這個範疇,指針必然屬于「泛整型」的範圍。用指針的高超境界,也爲將其看做一個「泛整型」。

  看看軟件的具體設計文檔,其數據結構定義部分經常看到「INT8、UINT8、INT16、UINT16、INT32、UINT32、INT64、UINT64」或「BYTE、Word、DWORD」等數據類型,它們在本質上都是(unsigned)char、(unsigned)short int、(unsigned)int、(unsigned)long int宏定義的結果,都屬于「泛整型」。所以,「泛整型」的概念真實地體現在日常的軟件設計當中。

  

C/C++編程新手錯誤語錄(續二)
更多內容請看C/C++技術專題 java編程開發手冊專題,或

  正因爲各種指針類型在本質上都是「泛整型」,因此它們可以互相轉化:

  int a, b;

  memset( (char*) &a, (char*) &b, sizeof(int) );

  等價于:

  int a, b;

  a = b;

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  從來沒有人會用memset( (char*) &a, (char*) &b, sizeof(int) )來代替a = b,這裏只是爲了說明問題。下面的代碼則經常用到:

  int *p = (int *) malloc(100*sizeof(int));

  

   memset ( p, 0, 100*sizeof(int) );//將申請的內存空間清0

  我們看memset的函數原型爲:

  void * memset ( void * buffer, int c, size_t num );

  實際上它接受的第一個參數是無類型指針,在memset函數體內,其它任意類型的指針都向void *轉化了。類似的內存操作函數memcpy所接受的源和目的內存地址也是無類型指針。

  char *轉化爲int *後的值雖然不變(還是那個地址),但是其++、--等操作的含義卻發生了變化,這也是要注重的。

  char *p;

  ++p;

  與

  char *p;

  ++(int *)p;

  的結果是不一樣的,前者的p值加了1,而後者的則增加了sizeof(int)。

  下面來剝Windows程序設計中消息傳遞函數兩個參數的皮,看看它們究竟是什麽:

  typedef UINT WPARAM;

  typedef LONG LPARAM;

  原來,WPARAM和LPARAM其實都屬于「泛整型」,所以不要報怨消息處理函數只能接受「泛整型」。實際上,從指針的角度上來講,在C/C++中,可以獲得任何類型實例(變量、結構、類)的指針,所以Windows的消息處理函數實際上可以接受一切類型的參數。

  驚天動地一句話:「泛整型」可表征一切。

  

C/C++編程新手錯誤語錄(續二)
更多內容請看C/C++技術專題 Java編程開發手冊專題,或

  (14)「值傳遞一定不會改變參數」

  理論而言,值傳遞的確不會改變參數的內容。但是,某年某月的某一天,隔壁Office的碩士mm寫了這麽一段程序,參數的值卻被改變了:

  int n = 9;

  char a[10];

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  example ( n, a ); //調用函數example(int n,char *pStr)

  printf (「%d」, n ); //輸出結果不是9

  大概整個office的人都被搞懵了,都說編譯器瞎搞,有問題。找到筆者,筆者憑借以往的經常,一眼就看出來不是什麽編譯器出錯,而是在函數example內對字符串a的訪問越界!

  當在函數example內對a的訪問越界後,再進行寫操作時,就有可能操作到了n所在的內存空間,于是改變了n的值。

  給出這個語錄,並非爲了推翻「值傳遞不會改變參數」的結論,而是爲了從側面證實在C/C++語言中,數組越界是多麽危險的錯誤!

  下面的兩個函數有明顯的數組越界:

  void example1()

  {

  char string[10];

  char* str1 = "0123456789";

  strcpy( string, str1 );

  }

  void example 2(char* str1)

  {

  char string[10];

  if( strlen( str1 ) <= 10 )

  {

  strcpy( string, str1 );

  }

  }

  而這個函數的越界就不這麽明顯:

  void example3()

  {

  char string[10], str1[10];

  int i;

  for(i=0; i<10; i++)

  {

  str1[i] = 'a';

  }

  strcpy( string, str1 );

  }

  其實,這個函數危險到了極點。因爲對于strcpy函數而言,拷貝的時候要碰到』\0』才結束,str1並沒有被賦予結束符,因而你根本就不知道strcpy( string, str1 )的結果究竟會是拷貝多大一片內存!

  遺憾的是,C/C++永遠不會在編譯和連接階段提示數組越界,它只會在運行階段導致程序的崩潰。

  數組越界,是大多數C/C++編程新手常犯的錯誤,而它又具有極大的隱蔽性,新手們一定要非凡注重。

  

C/C++編程新手錯誤語錄(續二)
更多內容請看C/C++技術專題 Java編程開發手冊專題,或

  (15)「C不高級,學C++、JAVA、C#才夠味」

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  也許譚浩強老師的C語言教材是絕大多數高校學生學習的第一門編程課程,所以在許多學生的心目中,覺得C是一種入門級的語言,他們舍棄基礎而追逐花哨的Visual XXX、Java、asp、php、.net,他們以爲這樣做「賺大了」。

  

  

  非也!

  C是一種多麽富有魅力的語言!在今時的絕對多數底層開發中,仍然幾乎被C完全壟斷。這些領域包括操作系統、嵌入式系統、數字信號處理等。舍棄C的經濟基礎搭.net的高層建築實在是危險。

  我們總是以爲自己把握了C,那麽請寫一個strcpy的標准函數。您的答案若是:

  void strcpy( char *strDest, char *strSrc )

  {

  while( (*strDest++ = * strSrc++) != 『\0』 );

  }

  很遺憾,您的程序只能拿到E。看看拿A的strcpy:

  char * strcpy( char *strDest, const char *strSrc )

  {

  assert( (strDest != NULL) && (strSrc != NULL) );

  char *address = strDest;

  while( (*strDest++ = * strSrc++) != 『\0』 );

  return address;

  }

  這個程序考慮了什麽?

  (1)程序要強大:爲了實現鏈式操作,將目的地址返回,函數返回類型改爲char *

  (2)程序要可讀:源字符串指針參數加const限制,表明爲輸入參數

  (3)程序要健壯:驗證strDest和strSrc非空

  假如這三點中您只考慮到0點或1點,那麽請回家好好修煉一下C。因爲這個最簡單的strcpy已驗證出您的C語言基礎只能叫做「入門」。

  再寫個簡單的strlen,這麽寫就好了:

  int strlen( const char *str ) //輸入參數爲const

  {

  assert( strt != NULL ); //斷言字符串地址非0

  int len;

  while( (*str++) != '\0' )

  {

  len++;

  }

  return len;

  }

  由此可見,寫好這些簡單的函數也需要深厚的基本功,永遠不要放棄對基本功的培養。

  

C/C++編程新手錯誤語錄(續二)
更多內容請看C/C++技術專題 Java編程開發手冊專題,或

  (16)「語言學得越多越好」

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  許多的初學者都經曆過這樣的一個階段,面對大量的編程語言和開發環境,他們倆感到難以取舍,不知道自己究竟應該學習什麽。于是他們什麽都學,今天看一下Visual Basic,明天看學一下C++,後天在書點看到了本Java便心血來潮買回來翻翻,大後天又發現必須學.net了。他們很痛苦,什麽都在看,結果什麽都沒學會,忙忙碌碌而收獲甚微。

  我們真的沒有必要在什麽語言都不甚精通的情況下亂看一氣。認准了一種真正語言就應該堅持不懈地努力。因爲任何一門語言的把握都非一朝一夕一事,筆者從六年前開始接觸C++,直到現在,每一階段仍有新的啓發,在項目開發的過程中也不斷有新的收獲。今日我還是絕對不敢宣稱自己「精通」這門語言。

  許多剛畢業的大學生,動不動就在簡曆上寫上自己精通一堆語言。與之相反,大多數優秀的工程師都不敢這麽寫。也許,研究越深,便越敢自身的無知。

  在下認爲,一個成熟的語言體系應該是:

  程序員的語言體系 = 一種彙編 + C + 一種面向對象(C++、JAVA、C#等)

  假如還要加,那就加一種解釋型語言,perl或tcl(也許其它)。

  語言具有極大的相似性,從C++過渡到JAVA只需要很短的一段時間。各種語言的發展曆史也體現了編程思想的發展史。我們學習一種語言,語法也許並不是最重要的,最重要的是蘊藏在語法外表下的深層特性和設計用意。

  本回書著落此處,更多錯誤語錄,當然是待續。

C/C++編程新手錯誤語錄(續二)
更多內容請看C/C++技術專題 Java編程開發手冊專題,或
 
 
 
上一篇《精華:C++編程新手錯誤語錄(續一)》
下一篇《對C++遞增(增量)運算符重載的思考》
 
 
 
 
 
 
日版寵物情人插曲《Winding Road》歌詞

日版寵物情人2017的插曲,很帶節奏感,日語的,女生唱的。 最後聽見是在第8集的時候女主手割傷了,然後男主用嘴幫她吸了一下,插曲就出來了。 歌手:Def...

兄弟共妻,我成了他們夜裏的美食

老鍾家的兩個兒子很特別,就是跟其他的人不太一樣,魔一般的執著。兄弟倆都到了要結婚的年齡了,不管自家老爹怎麽磨破嘴皮子,兄弟倆說不娶就不娶,老父母爲兄弟兩操碎了心...

如何磨出破洞牛仔褲?牛仔褲怎麽剪破洞?

把牛仔褲磨出有線的破洞 1、具體工具就是磨腳石,下面墊一個硬物,然後用磨腳石一直磨一直磨,到把那塊磨薄了,用手撕開就好了。出來的洞啊很自然的。需要貓須的話調幾...

我就是掃描下圖得到了敬業福和愛國福

先來看下敬業福和愛國福 今年春節,支付寶再次推出了“五福紅包”活動,表示要“把欠大家的敬業福都還給大家”。 今天該活動正式啓動,和去年一樣,需要收集“五福”...

冰箱異味産生的原因和臭味去除的方法

有時候我們打開冰箱就會聞到一股異味,冰箱裏的這種異味是因爲一些物質發出的氣味的混合體,聞起來讓人惡心。 産生這些異味的主要原因有以下幾點。 1、很多人有這種習...

《極品家丁》1-31集大結局分集劇情介紹

簡介 《極品家丁》講述了現代白領林晚榮無意回到古代金陵,並追隨蕭二小姐化名“林三”進入蕭府,不料卻陰差陽錯上演了一出低級家丁拼搏上位的“林三升職記”。...

李溪芮《極品家丁》片尾曲《你就是我最愛的寶寶》歌詞

你就是我最愛的寶寶 - 李溪芮 (電視劇《極品家丁》片尾曲) 作詞:常馨內 作曲:常馨內 你的眉 又鬼馬的挑 你的嘴 又壞壞的笑 上一秒吵鬧 下...

烏梅的功效與作用以及烏梅的食用禁忌有哪些?

烏梅,又稱春梅,中醫認爲,烏梅味酸,性溫,無毒,具有安心、除熱、下氣、祛痰、止渴調中、殺蟲的功效,治肢體痛、肺痨病。烏梅泡水喝能治傷寒煩熱、止吐瀉,與幹姜一起制...

什麽是脂肪粒?如何消除臉部脂肪粒?

什麽是脂肪粒 在我們的臉上總會長一個個像脂肪的小顆粒,弄也弄不掉,而且顔色還是白白的。它既不是粉刺也不是其他的任何痘痘,它就是脂肪粒。 脂肪粒雖然也是由油脂...

網絡安全治理:國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰受害者

來源:中國青年報 新的攻擊方法不斷湧現,黑客幾乎永遠占據網絡攻擊的上風,我們不可能通過技術手段杜絕網絡攻擊。國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰...

河南夫妻在溫嶺網絡直播“造人”內容涉黃被刑事拘留

夫妻網絡直播“造人”爆紅   1月9日,溫嶺城北派出所接到南京警方的協查通告,他們近期打掉了一個涉黃直播APP平台。而根據掌握的線索,其中有一對涉案的夫妻主播...

如何防止牆紙老化?牆紙變舊變黃怎麽辦?

如何防止牆紙老化? (1)選擇透氣性好的牆紙 市場上牆紙的材質分無紡布的、木纖維的、PVC的、玻璃纖維基材的、布面的等,相對而言,PVC材質的牆紙最不透氣...

鮮肌之謎非日本生産VS鮮肌之謎假日貨是謠言

觀點一:破日本銷售量的“鮮肌之謎” 非日本生産 近一段時間,淘寶上架了一款名爲“鮮肌之謎的” 鲑魚卵巢美容液,號稱是最近日本的一款推出的全新護膚品,産品本身所...

中國最美古詩詞精選摘抄

系腰裙(北宋詞人 張先) 惜霜蟾照夜雲天,朦胧影、畫勾闌。人情縱似長情月,算一年年。又能得、幾番圓。 欲寄西江題葉字,流不到、五亭前。東池始有荷新綠,尚小如...

關于女人的經典語句

關于女人的經典語句1、【做一個獨立的女人】 思想獨立:有主見、有自己的人生觀、價值觀。有上進心,永遠不放棄自己的理想,做一份自己喜愛的事業,擁有快樂和成就...

未來我們可以和性愛機器人結婚嗎?

你想體驗機器人性愛嗎?你想和性愛機器人結婚嗎?如果你想,機器人有拒絕你的權利嗎? 近日,第二屆“國際人類-機器人性愛研討會”大會在倫敦金史密斯大學落下帷幕。而...

全球最變態的十個地方

10.土耳其地下洞穴城市 變態指數:★★☆☆☆ 這是土耳其卡帕多西亞的一個著名景點,傳說是當年基督教徒們爲了躲避戰爭而在此修建。裏面曾住著20000人,...

科學家稱,人類死亡後意識將在另外一個宇宙中繼續存活

據英國《每日快報》報道,一位科學家兼理論家Robert Lanza博士宣稱,世界上並不存在人類死亡,死亡的只是身體。他認爲我們的意識借助我們體內的能量生存,而且...

《屏裏狐》片頭曲《我愛狐狸精》歌詞是什麽?

《我愛狐狸精》 - 劉馨棋   (電視劇《屏裏狐》主題曲)   作詞:金十三&李旦   作曲:劉嘉   狐狸精 狐狸仙   千年修...

 
 
 
前文回顧:C/C++編程新手錯誤語錄 錯誤語錄(續一)(13)「整型變量僅僅意味著一個整數」   當我們還是一個新手,看整型就是整數;   當我們成爲高手,看什麽都是整型。   整型,在所有C/C++基本數據類型中最富有藝術魅力和奇幻色彩。   我們從某聞名論壇的一篇帖子開始一窺整型的奧妙。   問:Vxworks操作系統啓動一個任務的函數是taskSpawn(char* name, int PRiority, int options, int stacksize, FUNCPTR function, int arg1,.. , int arg10),它只接受整型參數,我該怎麽辦才能給它傳一個結構體(在32位PowerPC平台下)?   答:可以傳入結構體的指針,在32位PowerPC平台下,指針本質上就是一個32位整數,在函數體內將整型強制轉化爲結構體指針就可訪問結構體的每一個元素。   如: //啓動任務1 taskSpawn(「task1」, 180, NULL, 10000, Task1Fun, &pStrUCtAr,0,0,0,0,0,0,0,0,0); //task1函數 Task1Fun ( int arg1 ) { struct_x * pStructx = (struct_x *) arg1; //將整型強制轉化爲結構體指針 … }   在此提出「泛整型」的概念,(unsigned)char、(unsigned)short int、(unsigned)int、(unsigned)long int等都屬于這個範疇,指針必然屬于「泛整型」的範圍。用指針的高超境界,也爲將其看做一個「泛整型」。   看看軟件的具體設計文檔,其數據結構定義部分經常看到「INT8、UINT8、INT16、UINT16、INT32、UINT32、INT64、UINT64」或「BYTE、Word、DWORD」等數據類型,它們在本質上都是(unsigned)char、(unsigned)short int、(unsigned)int、(unsigned)long int宏定義的結果,都屬于「泛整型」。所以,「泛整型」的概念真實地體現在日常的軟件設計當中。 [url=/bbs/detail_1785325.html][img]http://image.wangchao.net.cn/it/1323423870012.gif[/img][/url] 更多內容請看C/C++技術專題 java編程開發手冊專題,或   正因爲各種指針類型在本質上都是「泛整型」,因此它們可以互相轉化: int a, b; memset( (char*) &a, (char*) &b, sizeof(int) );   等價于: int a, b; a = b;   從來沒有人會用memset( (char*) &a, (char*) &b, sizeof(int) )來代替a = b,這裏只是爲了說明問題。下面的代碼則經常用到: int *p = (int *) malloc(100*sizeof(int)); memset ( p, 0, 100*sizeof(int) ); //將申請的內存空間清0   我們看memset的函數原型爲: void * memset ( void * buffer, int c, size_t num );   實際上它接受的第一個參數是無類型指針,在memset函數體內,其它任意類型的指針都向void *轉化了。類似的內存操作函數memcpy所接受的源和目的內存地址也是無類型指針。   char *轉化爲int *後的值雖然不變(還是那個地址),但是其++、--等操作的含義卻發生了變化,這也是要注重的。 char *p; ++p;   與 char *p; ++(int *)p;   的結果是不一樣的,前者的p值加了1,而後者的則增加了sizeof(int)。   下面來剝Windows程序設計中消息傳遞函數兩個參數的皮,看看它們究竟是什麽: typedef UINT WPARAM; typedef LONG LPARAM;   原來,WPARAM和LPARAM其實都屬于「泛整型」,所以不要報怨消息處理函數只能接受「泛整型」。實際上,從指針的角度上來講,在C/C++中,可以獲得任何類型實例(變量、結構、類)的指針,所以Windows的消息處理函數實際上可以接受一切類型的參數。   驚天動地一句話:「泛整型」可表征一切。 [url=/bbs/detail_1785325.html][img]http://image.wangchao.net.cn/it/1323423870040.gif[/img][/url] 更多內容請看C/C++技術專題 Java編程開發手冊專題,或 (14)「值傳遞一定不會改變參數」   理論而言,值傳遞的確不會改變參數的內容。但是,某年某月的某一天,隔壁Office的碩士mm寫了這麽一段程序,參數的值卻被改變了: int n = 9; char a[10]; example ( n, a ); //調用函數example(int n,char *pStr) printf (「%d」, n );  //輸出結果不是9   大概整個office的人都被搞懵了,都說編譯器瞎搞,有問題。找到筆者,筆者憑借以往的經常,一眼就看出來不是什麽編譯器出錯,而是在函數example內對字符串a的訪問越界!   當在函數example內對a的訪問越界後,再進行寫操作時,就有可能操作到了n所在的內存空間,于是改變了n的值。   給出這個語錄,並非爲了推翻「值傳遞不會改變參數」的結論,而是爲了從側面證實在C/C++語言中,數組越界是多麽危險的錯誤!   下面的兩個函數有明顯的數組越界: void example1() { char string[10]; char* str1 = "0123456789"; strcpy( string, str1 ); } void example 2(char* str1) { char string[10]; if( strlen( str1 ) <= 10 ) { strcpy( string, str1 ); } }   而這個函數的越界就不這麽明顯: void example3() { char string[10], str1[10]; int i; for(i=0; i<10; i++) { str1[i] = 'a'; } strcpy( string, str1 ); }   其實,這個函數危險到了極點。因爲對于strcpy函數而言,拷貝的時候要碰到』\0』才結束,str1並沒有被賦予結束符,因而你根本就不知道strcpy( string, str1 )的結果究竟會是拷貝多大一片內存!   遺憾的是,C/C++永遠不會在編譯和連接階段提示數組越界,它只會在運行階段導致程序的崩潰。   數組越界,是大多數C/C++編程新手常犯的錯誤,而它又具有極大的隱蔽性,新手們一定要非凡注重。 [url=/bbs/detail_1785325.html][img]http://image.wangchao.net.cn/it/1323423870104.gif[/img][/url] 更多內容請看C/C++技術專題 Java編程開發手冊專題,或 (15)「C不高級,學C++、JAVA、C#才夠味」   也許譚浩強老師的C語言教材是絕大多數高校學生學習的第一門編程課程,所以在許多學生的心目中,覺得C是一種入門級的語言,他們舍棄基礎而追逐花哨的Visual XXX、Java、asp、php、.net,他們以爲這樣做「賺大了」。   非也!   C是一種多麽富有魅力的語言!在今時的絕對多數底層開發中,仍然幾乎被C完全壟斷。這些領域包括操作系統、嵌入式系統、數字信號處理等。舍棄C的經濟基礎搭.net的高層建築實在是危險。   我們總是以爲自己把握了C,那麽請寫一個strcpy的標准函數。您的答案若是: void strcpy( char *strDest, char *strSrc ) {   while( (*strDest++ = * strSrc++) != 『\0』 ); }   很遺憾,您的程序只能拿到E。看看拿A的strcpy: char * strcpy( char *strDest, const char *strSrc ) {  assert( (strDest != NULL) && (strSrc != NULL) ); char *address = strDest;  while( (*strDest++ = * strSrc++) != 『\0』 ); return address; }   這個程序考慮了什麽?   (1)程序要強大:爲了實現鏈式操作,將目的地址返回,函數返回類型改爲char *   (2)程序要可讀:源字符串指針參數加const限制,表明爲輸入參數   (3)程序要健壯:驗證strDest和strSrc非空   假如這三點中您只考慮到0點或1點,那麽請回家好好修煉一下C。因爲這個最簡單的strcpy已驗證出您的C語言基礎只能叫做「入門」。   再寫個簡單的strlen,這麽寫就好了: int strlen( const char *str ) //輸入參數爲const { assert( strt != NULL ); //斷言字符串地址非0 int len; while( (*str++) != '\0' ) { len++; } return len; }   由此可見,寫好這些簡單的函數也需要深厚的基本功,永遠不要放棄對基本功的培養。 [url=/bbs/detail_1785325.html][img]http://image.wangchao.net.cn/it/1323423870118.gif[/img][/url] 更多內容請看C/C++技術專題 Java編程開發手冊專題,或 (16)「語言學得越多越好」   許多的初學者都經曆過這樣的一個階段,面對大量的編程語言和開發環境,他們倆感到難以取舍,不知道自己究竟應該學習什麽。于是他們什麽都學,今天看一下Visual Basic,明天看學一下C++,後天在書點看到了本Java便心血來潮買回來翻翻,大後天又發現必須學.net了。他們很痛苦,什麽都在看,結果什麽都沒學會,忙忙碌碌而收獲甚微。   我們真的沒有必要在什麽語言都不甚精通的情況下亂看一氣。認准了一種真正語言就應該堅持不懈地努力。因爲任何一門語言的把握都非一朝一夕一事,筆者從六年前開始接觸C++,直到現在,每一階段仍有新的啓發,在項目開發的過程中也不斷有新的收獲。今日我還是絕對不敢宣稱自己「精通」這門語言。   許多剛畢業的大學生,動不動就在簡曆上寫上自己精通一堆語言。與之相反,大多數優秀的工程師都不敢這麽寫。也許,研究越深,便越敢自身的無知。   在下認爲,一個成熟的語言體系應該是:   程序員的語言體系 = 一種彙編 + C + 一種面向對象(C++、JAVA、C#等)   假如還要加,那就加一種解釋型語言,perl或tcl(也許其它)。   語言具有極大的相似性,從C++過渡到JAVA只需要很短的一段時間。各種語言的發展曆史也體現了編程思想的發展史。我們學習一種語言,語法也許並不是最重要的,最重要的是蘊藏在語法外表下的深層特性和設計用意。   本回書著落此處,更多錯誤語錄,當然是待續。 [url=/bbs/detail_1785325.html][img]http://image.wangchao.net.cn/it/1323423870131.gif[/img][/url] 更多內容請看C/C++技術專題 Java編程開發手冊專題,或
󰈣󰈤
 
 
 
  免責聲明:本文僅代表作者個人觀點,與王朝網路無關。王朝網路登載此文出於傳遞更多信息之目的,並不意味著贊同其觀點或證實其描述,其原創性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,並請自行核實相關內容。
 
 
陽光靓麗的模特兒(8)
陽光靓麗的模特兒(7)
陽光靓麗的模特兒(6)
陽光靓麗的模特兒(5)
秋-印象
德慶盤龍峽 一
松江印象之三
雲之南(寬幅)
 
>>返回首頁<<
 
 
 
 熱帖排行
 
 
 
 
© 2005- 王朝網路 版權所有