今天因為第一天吧,老師還不太清楚我們的底究竟到那里。是因為我們之前都是全自學的,所以現在要摸一摸底吧。一開始,他直接引入了上界程序員考試的下午的第一道題,是一道編程填空題。如下:
int strcmp( char *s, char *t)
{
while(*s && *t && _______)
{ s++;t++;
}
return ________;
}
這是模仿C語言字符函數庫里的字符比較函數,當時我第一時間就想到了一種方法,第一空因為大家都沒有問題吧,*s和*t這兩個都保持為邏輯真就行,表明這個存儲單元是用字符的,大家都知道C語言里沒有字符串這種變量的,只有字符數組,'\0'這個符號就是用來表明這個字符數組到了結尾了,這里又有一個新的概念要說說的了,就是C語言邏輯里非零的都為真,那么'\0'這個符號就是為零。所以填這個空就應該沒有什么太大的難度了,跟著就是還要有一個條件退出循環,因為是比較大小,只要保持一樣都繼續,所以條件也很顯示的可以寫出來*s == *t。至于第二題當時我的思維就銷定在條件運算符里,因為返回的值是有三種可以性的,大于返回正數,等于就返回零,小于就返回負數。知道了這三種可能就可以用條件運算符填了,我當時的答案是這樣的 *s == *t ? 0: *s>*t ? 1 : -1 ,這是不是很長呢,其實我的答案我也不知道是否對,但是真正的答案是 *s - * t .知道答案為什么是這樣嗎?當時我也一時給答案嚇住啦,因為當時我真想到是用它們本身的比較就可以得出結果(運用ACSII碼),*s - *t 如果s指針所指向的單元如果是大于當然就是正數啦,跟著其它的原理一樣,這里不再詳細說明。
除了引用這道答給我們說了很多的基礎知識外,還更詳細地給我們介紹了指針,唉!為什么老師說的總是這么的清晰明白,如果當初可以老師教的話就可以走少很多彎路了。算了,說這些話都是沒有用的,只有現在能學好就行了。大家都指針的基礎還有些吧,這里重要的提一提老師今天反復強調的一個概念,就是指針就是指向地址的一個變量。好了,今天就到這里吧。
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/