StringCopy 函式的簡化過程

2021-04-13 12:09:03 字數 1256 閱讀 3099

下面是stringcopy()函式的最原始版本,基於標準庫的strcpy(),該函式用了陣列符號,較為容易理解

char *stringcopy( char dest[ ], char sour[ ] )

dest[i] = '/0';

return dest;

}下面是stringcopy()函式的另外乙個版本,用指標代替陣列,完成了同樣的功能。

char *stringcopy( char *dest, char *sour )

dest[i] = '/0';

return dest;

} 將程式部分也改用指標來寫

char *stringcopy( char *dest, char *sour )

*(dest+i) = '/0';

return dest;

}如果對該函式用指標引數,就不再需要指標變數i進行指標遞增了,源程式如下

char *stringcopy( char *dest, char *sour )

*dest = '/0';

dest = temp;

return dest;

}下面,我們可以讓for迴圈的判斷更加有效,這個版本依然要檢查空字元,但是它是通過檢查字元本身來判斷。因為空字元等於0,當遇到空字元時判斷條件為假。

char *stringcopy( char *dest, char *sour )

*dest = '/0';

dest = temp;

return dest;

}用乙個賦值語句就可以讓該函式變的更加高效,賦值語句就等於乙個值,這個值就是被賦予的值。據此可以讓迴圈變的更加簡潔。

char *stringcopy( char *dest, char *sour )

dest = temp;

return dest;

}當我們採用while迴圈時,我們發現可以讓該函式更加簡潔:

char *stringcopy( char *dest, char *sour )

return temp;

}當然,我們注意到該while迴圈體為空,因此完全可以用乙個分號取代該迴圈體以得到我們的stringcopy()的最終簡化版:

char *stringcopy( char *dest, char *sour )

這個函式短小精悍,但是他與最原始的函式完成的是同樣的事情。

以上例程來自於《軟體開發:程式設計與設計(c語言版)》p345-349,**均在devc4.9.9.2程式設計環境下除錯通過

函式簡化程式

常用的函式 tolower int ch 返回ch相應的小寫字母 a z toupper int ch 若ch是小寫字母 a z 返回相應的大寫字母 a z atoi char 將char型別字串轉化為整形 atoi string 將string型別轉化為整形 itoa int 將int整形轉化為字...

簡化函式呼叫(三)

11,hide method 隱藏函式 現象 有乙個函式,從來沒有被其他任何類用到 做法 將這個函式修改為private。12,replace constructor with factory method 以工廠函式取代建構函式 現象 你希望在建立物件時不僅僅是做簡單的建構動作 做法 將建構函式替...

重構手法(三) 簡化函式呼叫

replace parameter with mehtods 以函式取代引數 物件呼叫某個方法,並將所得結果作為引數,傳遞給另乙個方法。而接受該引數的函式也可以呼叫前乙個函式。就讓引數接受者去除該引數,並直接呼叫前乙個函式。如果函式可以通過其他途徑獲得引數值,那麼它就不應該通過引數取得該值。過長的引...