程式設計師考試補課筆記-第一天 (轉)

worldblog發表於2007-12-13
程式設計師考試補課筆記-第一天 (轉)[@more@]  今天是第一天補課,終於有又機會可以聽到林老師的課了,我覺得他比老潭說得還要好呢,雖然我沒有聽過老潭的課,不過我相信絕大部份在校的人學C語言都是用老潭的《C設計》吧。這本書的好處是有很多的,最主要的一點就是可以用生動的例子來說明一些概念,不過還是一點不好的地方,就是本書全都只是圍繞著基礎來說,沒有一些可以讓同學深入研究的課題。就我知道機械工業譯的一本《C語言設計教程》,這本書有大量的例項練習,而且是圍繞著生活的。學習和樂趣合在一齊,我在看這本書時都有好幾個特別吸引我的興趣課題呢!書就介紹到這裡吧,還是說回今天補課的情況。
  今天因為第一天吧,老師還不太清楚我們的底究竟到那裡。是因為我們之前都是全自學的,所以現在要摸一摸底吧。一開始,他直接引入了上界程式設計師考試的下午的第一道題,是一道填空題。如下:
int strcmp( char *s, char *t)
{
  while(*s && *t && _______)
  { s++;t++;
  }
  return ________;
}
  這是模仿C語言字元庫裡的字元比較函式,當時我第一時間就想到了一種方法,第一空因為大家都沒有問題吧,*s和*t這兩個都保持為邏輯真就行,表明這個單元是用字元的,大家都知道C語言裡沒有字串這種變數的,只有字元陣列,'這個符號就是用來表明這個字元陣列到了結尾了,這裡又有一個新的概念要說說的了,就是C語言邏輯裡非零的都為真,那麼'這個符號就是為零。所以填這個空就應該沒有什麼太大的難度了,跟著就是還要有一個條件退出迴圈,因為是比較大小,只要保持一樣都繼續,所以條件也很顯示的可以寫出來*s == *t。至於第二題當時我的思維就銷定在條件運算子裡,因為返回的值是有三種可以性的,大於返回正數,等於就返回零,小於就返回負數。知道了這三種可能就可以用條件運算子填了,我當時的答案是這樣的 *s == *t ? 0: *s>*t ? 1 : -1 ,這是不是很長呢,其實我的答案我也不知道是否對,但是真正的答案是 *s - * t .知道答案為什麼是這樣嗎?當時我也一時給答案嚇住啦,因為當時我真想到是用它們本身的比較就可以得出結果(運用ACSII碼),*s - *t 如果s指標所指向的單元如果是大於當然就是正數啦,跟著其它的原理一樣,這裡不再詳細說明。
  除了引用這道答給我們說了很多的基礎知識外,還更詳細地給我們介紹了指標,唉!為什麼老師說的總是這麼的清晰明白,如果當初可以老師教的話就可以走少很多彎路了。算了,說這些話都是沒有用的,只有現在能學好就行了。大家都指標的基礎還有些吧,這裡重要的提一提老師今天反覆強調的一個概念,就是指標就是指向地址的一個變數。好了,今天就到這裡吧。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-992821/,如需轉載,請註明出處,否則將追究法律責任。

相關文章