sds是乙個很小的c字元處理庫,目的是提供像c標準庫裡頭那些類似但又更加安全的一套字元操作api。原始碼鏈結
原始檔主要就兩個-sds.h/sds.c,內容不是很多,仔細看還是能看懂的。然後打算做個記錄,將自己學習過程中覺得需要留意的知識點記下來。雖然網上一搜就一大堆原始碼分析,這裡只是按自己的理解進行記錄,通過整理知識點,加深印象。
c語言裡頭是沒有字串這一基本資料型別的,只有char
這種儲存單個字元的字元型資料型別,當然儲存整數的整int
、long
等資料型別。為什麼沒有字串型別?舉個例子-「abcd」和」abcde」這兩個字串在記憶體中所佔的位元組數是不一樣的,我們需要用兩個變數來儲存它們,當然,這兩個變數的大小是必須要確定的,不然編譯的時候就會報錯。char
只能存乙個,所以我們不能定義兩個char
型別的變數來存這兩個字串。解決辦法是定義乙個字元型指標來指向乙個儲存字串的位址,像這樣char* str = "abcd"
,還有就是定義乙個字元陣列,這樣char str[6] = "abcde"
注意陣列下標大小。當我們已經知道某串字元的大小的時候,我們可以直接定義乙個長度剛剛好的字元陣列來儲存它,但是有時候我們並不知道這串字元的大小,只能先宣告乙個盡可能大的變數,後面要用到時再把字串放進去。這樣就會有乙個問題-該變數容量太小,無法完整容納這串字元;太大,多出來的空間就浪費了。有時我們經常也會用到char* str = (char*)malloc(size)
來分配記憶體,也是需要確定乙個大小的。正是由於以上所說的每個字串所佔記憶體大小的不確定性,導致c標準庫里頭是不帶字串這種基礎資料型別的。當我們要存一串字元的時候怎麼辦呢?自己看著辦。
好吧,上面這一大段其實講的都是些c語言的基礎知識,是個人理解,可能有錯誤地方。這裡並不是要講基礎,只是覺得去掉這一段後字數太少…就,就加上去啦:)
自己寫乙個字串操作的庫,效率肯定沒那些經驗豐富的大神寫的高,所以還是先學習使用現成的輪子吧。在我們造蹩腳的輪子的時候,多看看別人的好輪子是如何造的。
第0章 前言
首先感謝公尺聯客的zynq教程 韋東山老師的linux教程和黑金的verilog教程,筆者的fpga以及linux知識都 於他們,可以說他們為我未來的路打下了紮實的基礎。先宣告一點,筆者主要從事fpga相關的工作,linux是筆者剛接觸不久,所以若是筆者 寫的不好,請讀者們能夠諒解,最好能夠加以糾正...
Math 開發 0 前言
後文敬請期待 最近想學習c 剛入門,然後想搞點不大不小的玩玩,又聯想到gui,上網查了一下,qt最好使,就下了乙個,搞個小專案,練練手.本人又是乙個數學愛好者,這個練習就叫math 吧,似乎不是很土氣 功能 就當是數學工具 win10 qt5.9.9,安裝以後會介紹.gitee http轉殖位址 g...
具體數學 0 前言
具體數學 是2013年人民郵電出版社出版的圖書,是一本在大學中廣泛使用的經典數學教科書 作者是ronald l.grahamdonald e.knuthoren patashnik。具體數學 電腦科學基礎 第2版 第1章遞迴問題1 1.1 河內塔1 1.2 平面上的直線4 1.3 約瑟夫問題7 習題...