機器學習的第一步是準備數據,好的數據能幫助我們加深對機器學習演算法的理解。 不管是在學習還是實際工作中,準備數據永遠是一個枯燥乏味的步驟。scikit-learn庫顯然看到了這個痛點,才在它的數據載入子模塊中為我們準備了直接可用的數據集。 在它的數據載入子模塊中,提供了6種直接可用來學習演算法的經典數據 ...
#define offset_of(type, member) ((unsigned int)&((type*)0)->member) #define container_of(ptr, type, member) ((type *)((char *)(ptr) - offset_of(type, member)))
offset_of(type, member)
用途: 用於獲取獲取結構體某一個成員在該結構體中的位置
參數1:type ,表示結構體的類型
參數2:member 表示結構體成員
分析:
(unsigned int) & (type*)0)->member a.把值為0的指針強制轉換成該結構體類型
b.通過該指針找到該成員 c.獲取該成員相對於0 的地址偏移 d.強轉成整形container_of(ptr, type, member)
用途: 知道結構體中某一個成員的地址,需要獲取到整個結構體的指針,通過該指針獲取其他成員變數的數據
參數1:ptr,某一個成員的地址
參數2:type 結構體類型
參數3:member 該成員的名字
分析:
(type *)((char *)(ptr) - offset_of(type, member))a.獲取該成員相對於結構體指針的偏移
b.將該成員的地址轉換成char*類型,該指針指向1byte的數據 c.轉換成結構體類型的指針 d.使用該結構體成員的指針 - 該成員相對於結構體指針的偏移 = 結構體指針