C Primer讀書筆記第三章 下

2021-07-25 15:36:02 字數 1201 閱讀 6177

進入了第三章的下半部分,感覺因為使用的少,所以對這些東西沒有什麼感覺,也就大概的瀏覽了一下。

第三章首先講的是迭代器。就是感覺是資料結構的開始和結尾的一種反饋。但是書中強調了迭代器和指標不是一樣的東西,所以對此也比較疑惑,先記錄下來。使用的方法是 auto i = s.begin(); i < s.end(); i++ 這種方式。書中寫到雖然迭代器和指標不一樣,但是仍然可以使用(*i)這種操作。或者i++的這種操作,所以迭代器的本質應該還是指標的。不過使用auto只是一種省事的方式,還可以的的 vector::iterator it,或者string it2。

後面就是講的是陣列和多維陣列,但是我感覺沒有講到精髓上。都是簡單的賦值等操作。或許我讀的太草率,也或者是在更往後吧,拭目以待。但是這裡有乙個很好的知識點是:理解複雜的陣列宣告。例如int (*parray)[10] = &arr; parray指向乙個含有10個整數的陣列。 int (&arrref)[10] = arr; arrref引用乙個含有10個整數的陣列。這裡使用的是從內向外的理解方式(*parry)是乙個指標,指向了含有10個資料的arr。這裡的10個資料都是int的型別。後面講的就是對於陣列裡面的資料的使用。其中乙個很重要的知識點就是關於陣列的越界。如果單純的使用下標就會發現很難去解決越界的問題(當然使用vector貌似是不錯,但是好像效率太低)。越界這種問題真的是很可怕的,編譯器編譯不出來,問題很難去復現。最可怕的就是在memcpy的時候經常出錯。在平時的工作中,就出現過本來已經把值確認了一遍,但是某個unsigned long型別的值很大,例如(2147483647 * 2) -1的值,然後這個值隨便加上乙個數就是乙個很小的值。很容易騙過檢驗條件,然後拷貝的時候就會出現問題。所以無論如何,在memcpy之前一定要把值單個判斷一遍,從而防止拷貝出錯。後面講的就是指標和陣列,這兩個本來就是不分家的東西。使用陣列的時候,編譯器會把它變成指標。auto、迭代器其實都用的是指標。書中給介紹了一種利用指標的判斷方式:即把乙個值指向陣列的最後一位的下一位,只要比這個小,就可以繼續執行迴圈。但是感覺這個很有問題,萬一下乙個記憶體被鎖了,或者是什麼重要的記憶體,這樣不就會出問題嗎?所以在這裡留下乙個疑問。

最後就是一些與c的介面。想string、vector都是c++的產物,c想轉化資料就要用寫好的函式例如s.c_str()等。所以要注意這些的返回值。返回值是const char*,但是說string內不是const char*是不準確的。所以就這些吧。後面的多維陣列感覺不是很舒服講的。所以後面的以後再談。^-^

C Primer 讀書筆記 第三章

2010 09 14 19 58 68人閱讀收藏 舉報讀書 c string 第 章 標準庫型別 標準庫bitset型別 以下下標和位數均為 size t 型 定義在標頭檔案 cstddef 中,unsigned 整型 bitset 是一種類模板,用於儲存位集,並提供測位和置位操作 定義和初始化 b...

《C primer》第三章讀書筆記

c primer 第三章 物件導向程式設計 oop 的本質是設計並擴充套件自己的資料型別。內建的c 資料型別分為基本型別和復合型別。基本型別分為整數和浮點數。復合型別分為陣列 字串 指標和結構。c 通過使用變數來儲存資料。簡單變數 為把資訊儲存在計算機中,程式必須記錄三個基本屬性 資訊將儲存在 要儲...

C Primer 讀書筆記 第三章

第 章 標準庫型別 標準庫bitset型別 以下下標和位數均為 size t 型 定義在標頭檔案 cstddef 中,unsigned 整型 bitset 是一種類模板,用於儲存位集,並提供測位和置位操作 定義和初始化 bitset 在定義時需要以常量表示式的形式提供位數n 初始化時引數提供位數不足...