亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
情況3
範例程式碼
輸出2
首頁 後端開發(fā) C++ 為什麼在C/C++中,結(jié)構(gòu)體的sizeof不等於每個成員的sizeof總和?

為什麼在C/C++中,結(jié)構(gòu)體的sizeof不等於每個成員的sizeof總和?

Aug 26, 2023 am 09:29 AM
結(jié)構(gòu)體 c/c++ sizeof

sizeof() 所取得的結(jié)構(gòu)類型元素的大小並不總是等於每個單獨成員的大小。有時編譯器會添加一些填充以避免對齊問題。所以尺寸可能會改變。當結(jié)構(gòu)成員後面跟著一個尺寸較大的成員或位於結(jié)構(gòu)末端時,將添加填充。不同的編譯器有不同類型的對齊約束。在 C 標準中,總對齊結(jié)構(gòu)取決於實作。

情況 1

在這種情況下,雙精確度 z 為 8 位元組長,大於 x(4 位元組) )。因此又增加了 4 個位元組的填充。此外,短類型資料 y 在記憶體中具有 2 個位元組空間,因此添加了額外的 6 個位元組作為填充。

為什麼在C/C++中,結(jié)構(gòu)體的sizeof不等於每個成員的sizeof總和?

範例程式碼

#include <stdio.h>
struct myStruct {
   int x; //Integer takes 4 bytes, and padding 4 bytes
   double z; //Size of double is 8-byte, no padding
   short int y; //Size of short is 2-byte, padding 6-bytes
};
main() {
   printf("Size of struct: %d", sizeof(struct myStruct));
}

輸出2

Size of struct: 24

情況2

在這種情況下,先插入雙精度數(shù),它佔用8 位元組的空間?,F(xiàn)在加入了整數(shù) x(4 位元組)。所以還有另外4個位元組的空間。新增短y後,可以放入額外的4位元組空間中,總共佔用16位元組空間。

為什麼在C/C++中,結(jié)構(gòu)體的sizeof不等於每個成員的sizeof總和?

範例程式碼

#include <stdio.h>
struct myStruct {
   double z; //Size of double is 8-byte, no padding
   int x; //Integer takes 4 bytes, and padding 4 bytes
   short int y; //Size of short is 2-byte, padding 6-bytes
};
main() {
   printf("Size of struct: %d", sizeof(struct myStruct));
}

輸出2

Size of struct: 16

情況3

第三種情況也佔用16位元組的記憶體空間,但排列方式不同。由於第一個成員是double,所以首先放置,然後再加入short 類型資料?,F(xiàn)在,當整數(shù)嘗試插入時,可以將其放入剩餘的 6 位元組區(qū)域中。因此,short 之後存在一個填充,但整數(shù)資料之後不需要填充。

為什麼在C/C++中,結(jié)構(gòu)體的sizeof不等於每個成員的sizeof總和?

範例程式碼

#include <stdio.h>
struct myStruct {
   double z; //Size of double is 8-byte, no padding
   short int y; //Size of short is 2-byte, padding 6-bytes
   int x; //Integer takes 4 bytes, and padding 4 bytes
};
main() {
   printf("Size of struct: %d", sizeof(struct myStruct));
}

輸出2

Size of struct: 16

以上是為什麼在C/C++中,結(jié)構(gòu)體的sizeof不等於每個成員的sizeof總和?的詳細內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
在C語言中,結(jié)構(gòu)體(Structure)和陣列(Array)之間的差異是什麼? 在C語言中,結(jié)構(gòu)體(Structure)和陣列(Array)之間的差異是什麼? Aug 30, 2023 pm 09:37 PM

在C中,結(jié)構(gòu)體和數(shù)組都用作數(shù)據(jù)類型的容器,即在結(jié)構(gòu)體和數(shù)組中我們都可以存儲數(shù)據(jù),也可以對它們執(zhí)行不同的操作。基於內(nèi)部實現(xiàn),以下是兩者之間存在一些基本差異。 Sr.編號鍵結(jié)構(gòu)數(shù)組1定義結(jié)構(gòu)體可以定義為一種資料結(jié)構(gòu),用作容器,可以容納不同類型的變數(shù)。另一方面,數(shù)組是一種用作容器的資料結(jié)構(gòu),可以容納相同類型的變量,但不支援多種資料類型變數(shù)。 2記憶體分配輸入資料的記憶體分配結(jié)構(gòu)不必位於連續(xù)的記憶體位置。而在數(shù)組的情況下,輸入資料儲存在連續(xù)的記憶體分配中,這意味著數(shù)組將資料儲存在分配連續(xù)記憶體區(qū)塊的記憶體模型中(即,具有

結(jié)構(gòu)體在PHP的應(yīng)用與操作方法 結(jié)構(gòu)體在PHP的應(yīng)用與操作方法 Jul 16, 2023 pm 11:21 PM

結(jié)構(gòu)體在PHP的應(yīng)用與操作方法隨著PHP語言的不斷發(fā)展壯大,其功能也日益完善。除了常見的變數(shù)和數(shù)組,PHP還提供了一種更靈活的資料類型,即結(jié)構(gòu)體(Struct)。結(jié)構(gòu)體是一種由多個不同類型的資料成員組成的複合資料類型。它可以將相關(guān)資料組合,形成一個更完整、更有結(jié)構(gòu)的資料。在PHP中,可以透過使用類別和物件來模擬結(jié)構(gòu)體的行為和功能。首先,我們來看看如何

使用json.Marshal函數(shù)將結(jié)構(gòu)體轉(zhuǎn)換為JSON字串 使用json.Marshal函數(shù)將結(jié)構(gòu)體轉(zhuǎn)換為JSON字串 Jul 24, 2023 pm 12:54 PM

使用json.Marshal函數(shù)將結(jié)構(gòu)體轉(zhuǎn)換為JSON字串在Go語言中,可以使用json.Marshal函數(shù)將結(jié)構(gòu)體轉(zhuǎn)換為JSON字串。結(jié)構(gòu)體是一種由多個欄位組成的資料類型,而JSON是一種常用的輕量級資料交換格式。將結(jié)構(gòu)體轉(zhuǎn)換為JSON字串可以方便地在不同系統(tǒng)之間交換資料。下面是一個範例程式碼:packagemainimport(&q

golang如何回傳結(jié)構(gòu)體? golang如何回傳結(jié)構(gòu)體? Apr 23, 2024 pm 02:03 PM

如何在Golang中傳回結(jié)構(gòu)體?在函數(shù)簽章中指定結(jié)構(gòu)體類型,如:funcgetPerson()Person{}。在函數(shù)體內(nèi)使用return{}語句傳回結(jié)構(gòu)體,其中包含所需欄位。結(jié)構(gòu)體欄位可以是基礎(chǔ)類型或其他結(jié)構(gòu)體。

為什麼在C/C++中,結(jié)構(gòu)體的sizeof不等於每個成員的sizeof總和? 為什麼在C/C++中,結(jié)構(gòu)體的sizeof不等於每個成員的sizeof總和? Aug 26, 2023 am 09:29 AM

sizeof()所獲得的結(jié)構(gòu)類型元素的大小並不總是等於每個單獨成員的大小。有時編譯器會添加一些填充以避免對齊問題。所以尺寸可能會改變。當結(jié)構(gòu)成員後面跟著一個尺寸較大的成員或位於結(jié)構(gòu)末端時,將添加填充。不同的編譯器有不同類型的對齊約束。在C標準中,總對齊結(jié)構(gòu)取決於實作。情況1在這種情況下,雙精度z為8位元組長,大於x(4位元組))。因此又增加了4個位元組的填充。此外,短類型資料y在記憶體中具有2位元組空間,因此添加了額外的6位元組作為填充。範例程式碼#include<stdio.h>structmyS

Golang結(jié)構(gòu)體強轉(zhuǎn):實作原理與技巧詳解 Golang結(jié)構(gòu)體強轉(zhuǎn):實作原理與技巧詳解 Apr 03, 2024 pm 03:09 PM

Golang中結(jié)構(gòu)體強轉(zhuǎn)是將一種結(jié)構(gòu)體類型的值轉(zhuǎn)換為另一種類型??梢酝高^斷言強轉(zhuǎn)、反射強轉(zhuǎn)、指針間接強轉(zhuǎn)等技巧來實現(xiàn)。斷言強轉(zhuǎn)使用型別斷言,反射強轉(zhuǎn)使用反射機制,指標間接強轉(zhuǎn)避免值複製。具體步驟為:1.斷言強轉(zhuǎn):使用typeassertion語法;2.反射強轉(zhuǎn):使用reflect.Type.AssignableTo和reflect.Value.Convert函數(shù);3.指標間接強轉(zhuǎn):使用指標解引用。

匿名聯(lián)合體與結(jié)構(gòu)體在C語言的應(yīng)用 匿名聯(lián)合體與結(jié)構(gòu)體在C語言的應(yīng)用 Sep 16, 2023 pm 06:45 PM

這裡我們來看看什麼是C語言中的匿名聯(lián)合體和結(jié)構(gòu)體。匿名聯(lián)合體和結(jié)構(gòu)體就是未命名的聯(lián)合體和結(jié)構(gòu)體。由於它們沒有名稱,因此我們無法建立它的直接物件。我們將其用作嵌套結(jié)構(gòu)或聯(lián)合。這些是匿名聯(lián)合和結(jié)構(gòu)的範例。 struct{??datatypevariable;??...};union{??datatypevariable;??...};在這個例子中,我們正在創(chuàng)建

php與c#的差別有哪些 php與c#的差別有哪些 Jun 02, 2023 pm 01:45 PM

php與c#的差異有:1、語言型別系統(tǒng)不同,PHP屬於動態(tài),而C#為靜態(tài)型別;2、使用的平臺不同,PHP可實現(xiàn)跨平臺,而C#為Windows專屬;3、程式設(shè)計範式不同,PHP支援物件導(dǎo)向、過程化和函數(shù)式編程,C#更傾向於物件導(dǎo)向編程;4、執(zhí)行速度不同,PHP速度更快,C#相對較慢;5、應(yīng)用場景不同,PHP應(yīng)用於Web開發(fā)、伺服器等, C#用於Windows桌面和網(wǎng)路應(yīng)用程式。

See all articles