freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

sizeof詳解(完整版)

2025-09-09 09:40上一頁面

下一頁面
  

【正文】 ouble )。// error  struct S  {  unsigned int f1 : 1。 // n動態(tài)賦值  char ary[n]。所以在32位計算機中,一個指針變量的返回值必定是4(注意結果是以字節(jié)為單位),可以預計,在將來的64位系統(tǒng)中指針變量的sizeof結果為8。 // 結果為4  sizeof( pi )。 // 結果為4,字符 末尾還存在一個NULL終止符  sizeof( a2 )。讓我們先看一個結構體:  struct S1  {  char c。  定義上面的變量后,加上斷點,運行程序,觀察s1所在的內(nèi)存,你發(fā)現(xiàn)了什么  ,s1的地址為0x0012FF78,其數(shù)據(jù)內(nèi)容如下:  0012FF78: 61 CC CC CC FF FF FF FF  發(fā)現(xiàn)了什么怎么中間夾雜了3個字節(jié)的CC看看MSDN上的說明:  When applied to a structure type or variable, sizeof returns the actual size, which may include padding bytes inserted for alignment.  原來如此,這就是傳說中的字節(jié)對齊?。∫粋€重要的話題出現(xiàn)了?! ∽止?jié)對齊的細節(jié)和編譯器實現(xiàn)相關,但一般而言,滿足三個準則:  1) 結構體變量的首地址能夠被其最寬基本類型成員的大小所整除;  2) 結構體每個成員相對于結構體首地址的偏移量(offset)都是成員大小的整數(shù)倍,如有需要編譯器會在成員之間加上填充字節(jié)(internal adding);  3) 結構體的總大小為結構體最寬基本類型成員大小的整數(shù)倍,如有需要編譯器會在最末一個成員之后加上填充字節(jié)(trailing padding)?! ∵@里敘述起來有點拗口,思考起來也有點撓頭,還是讓我們看看例子吧(具體數(shù)值仍以VC6為例,以后不再說明):  struct S3  {  char c1。它是用來調(diào)整結構體對齊方式的,不同編譯器名稱和用法略有不同,VC6中通過pragma pack實現(xiàn),也可以直接修改/Zp編譯開關?! ragma pack(pop) // 恢復先前的pack設置  計算sizeof(S1)時,min(2, sizeof(i))的值為2,所以i的偏移量為2,加上sizeof(i)等于6,能夠被2整除,所以整個S1的大小為6。使用位域的主要目的是壓縮存儲,其大致規(guī)則為:  1) 如果相鄰位域字段的類型相同,且其位寬之和小于類型的sizeof大小,則后面的字段將緊鄰前一個字段存儲,直到不能容納為止;  2) 如果相鄰位域字段的類型相同,但其位寬之和大于類型的sizeof大小,則后面的字段將從新的存儲單元開始,其偏移量為其類型大小的整數(shù)倍;  3) 如果相鄰的位域字段的類型不同,則各編譯器的具體實現(xiàn)有差異,VC6采取不壓縮方式,DevC++采取壓縮方式;  4) 如果位域字段之間穿插著非位域字段,則不進行壓縮;  5) 整個結構體的總大小為最寬基本類型成員大小的整數(shù)倍?! ∈纠?:  struct BF2  {  char f1 : 3?! ?! ?! ?. 聯(lián)合體的sizeof  結構體在內(nèi)存組織上是順序式的,聯(lián)合體則是重疊式,各成員共享一段內(nèi)存,所以整個聯(lián)合體的sizeof也就是每個成員sizeof的最大值?! har f3 : 5。
點擊復制文檔內(nèi)容
化學相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1