strlen實現的對比學習

2021-10-05 05:44:30 字數 913 閱讀 7925

參考ucos2的string.c、uboot(kernel)的string.c.

選擇最簡單的函式strlen作為分析,實踐對比學習的方法,產生更多的思考。

原理也比較簡單:字串的結束標誌為』\0』。所以測試乙個字串的長度,就是迴圈讀到』\0』.計算讀了多少個字元,最後返回長度。

在ucos中的原始碼:

cpu_size_t str_len

(cpu_char *pstr)

return

(len)

;}

在uboot中的實現:

size_t strlen

(const

char

*s)

一對比**,我們可以從中學習到很多東西:

ucos的**實現方式更像是我們一般的思路的實現方式。

我們要返回長度,那就定義乙個長度的變數,我們要迴圈判斷是否到結尾,就用個while,然後++計數。

細節:1.傳入型引數const的標記

2.const char *sc;的細節,指向位址內容不能被修改

3.for (sc = s; *sc!=』\0』;++sc),一句話就完成了迴圈遍歷。

4.++sc的細節也是體現效率的地方

5.最後返回值只需要sc-s的位址相減的一次計算,相比len++提高效率。

6.野指標的處理,ucos2中有單獨的判斷,而在uboot中沒有。

對比**的學習好處:

1.能以兩種不同的方式看實現方式

2.能發現優劣

3.能容易的理解

4.當發現不同時,努力糾其根本,也是種樂趣

5.相對更容易記憶

sizeof總結並於strlen對比

在c c 中,sizeof是乙個判斷資料型別或者表示式長度的運算子。其作用好像類似於strlen 函式,但是兩者還是有所不同。the sizeof keyword gives the amount of storage,in bytes,associated with a variable or a...

sizeof與strlen對比小實驗。。

include includeusing namespace std void func char str 100 cout 總之,對於指標,sizeof操作符返回這個指標佔的空間,一般是4個位元組 而對於乙個陣列,sizeof返回這個陣列所有元素佔的總空間。char 與char容易混淆,一定要分清...

strlen函式的實現

strlen函式作為乙個在面試經常被問到的問題,相信在不少求職的面經經歷中都有強調 首先看一下strlen函式的作用和基本的作用 計算字串的長度而不包括結束志 0 由此我們又可以聯想到與他相類似的相對應的另乙個關鍵字sizeof 計算字串的長度,且包括結束標誌 0 在此我只是提一下sizeof,下面...