C language 一些零碎知識的解釋

2021-05-27 15:19:46 字數 760 閱讀 3143

1、為什麼需要邊界對齊(特別是在結構體中)

成員對齊有乙個重要的條件,即每個成員按自己的方式對齊.其對齊的規則是,每個成員按其型別的對齊引數(通常是這個型別的大小)和指定對齊引數(一般編譯器預設是8位元組)中較小的乙個對齊.並且結構的長度必須為所用過的所有對齊引數的整數倍,不夠就補空位元組。

對齊的作用和原因

各個硬體平台對儲存空間的處理上有很大的不同。一些平台對某些特定型別的資料只能從某些特定位址開始訪問。比如有些架構的cpu在訪問 乙個沒有進行對齊的變數的時候會發生錯誤,那麼在這種架構下程式設計必須保證位元組對齊.其他平台可能沒有這種情況,但是最常見的是如果不按照適合其平台要求對 資料存放進行對齊,會在訪問效率上帶來損失。比如有些平台每次讀都是從偶位址開始,如果乙個int型(假設為32位系統)如果存放在偶位址開始的地方,那 麼乙個讀週期就可以讀出這32bit,而如果存放在奇位址開始的地方,就需要2個讀週期,並對兩次讀出的結果的高低位元組進行拼湊才能得到該32bit資料,顯然在讀取效率上下降很多。

2、file結構體

2.1、turbo c中:

typedef struct         file;                           /* this is the file object */

2.2、visual c++中:

struct _iobuf ;

typedef struct _iobuf file;

關於git的一些零碎知識

git檔案的三個狀態 已修改,已暫存,已提交 git的三個區域 工作區,暫存區,物件庫 git的幾個指標 以master為例 遠端有個master,本地有個master,本地有個指標是指向遠端的master的叫origin master 唯讀分支 git add 與git add 的區別 都是提交所...

C語言的一些零碎知識

寫這篇部落格的目的是加深記憶c語言的一些零碎知識,應付馬上到來的實習生面試。為了提高 cpu 的儲存速度,編譯器會對 struct 和 union的儲存進行優化,即進行位元組對齊。對於 struct 或 union 中的 struct 或者 union 來說,它們的位元組對齊標準就是它的所有成員中位...

一些零碎的知識點

在html中的onclick和事件中,如果想要傳輸值需要 onclick wds deletebooknotes item.id 需要加個單引號 在標籤中如果有href而且還有onclick方法需要注意 href 不可以寫成href 要不然跳轉出錯,可以不寫href click 與live 當檢視沒...