• 正文
    • 1.結(jié)構(gòu)體怎么初始化
    • 2.結(jié)構(gòu)體的sizeof怎么計算
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

結(jié)構(gòu)體怎么初始化 結(jié)構(gòu)體的sizeof怎么計算

2022/02/22
559
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

結(jié)構(gòu)體是一種用戶自定義的數(shù)據(jù)類型,它可以包含多個不同類型的變量。在C語言中,結(jié)構(gòu)體需要被正確地初始化才能使用,并且其實際所占用的內(nèi)存空間大小需要通過sizeof運算符來計算。

1.結(jié)構(gòu)體怎么初始化

結(jié)構(gòu)體的初始化是指給結(jié)構(gòu)體成員變量賦初值的過程。結(jié)構(gòu)體變量的初始化可以有以下幾種方式:

  • 按順序初始化,即按結(jié)構(gòu)體定義的順序逐一給成員變量賦值。
  • 按名稱初始化,即直接指定每個成員變量的名稱和值。
  • 使用C99標(biāo)準(zhǔn)新增的“設(shè)計器初始化”(designated initialization)特性,即可以指定某個成員變量的初始化值,而另外一些未指定的成員變量會以0或NULL的形式進行默認初始化。

比如:

struct Student {            char name[20];            int age;            float score;        };        struct Student s1 = {"Tom", 18, 89.5};        struct Student s2 = {.name = "Jerry", .score = 92.0}; //只初始化部分成員變量        struct Student s3 = {[1] = 20, [0] = "Bob"}; //指定某些成員變量的初始化值

2.結(jié)構(gòu)體的sizeof怎么計算

C語言中,計算結(jié)構(gòu)體所占用的內(nèi)存空間大小需要使用sizeof運算符。sizeof運算符返回一個對象或類型所占用的字節(jié)數(shù)。

當(dāng)對結(jié)構(gòu)體類型進行sizeof運算時,會得到該結(jié)構(gòu)體所占用的實際字節(jié)數(shù),其計算方法為:

struct Student {            char name[20];            int age;            float score;        };        sizeof(struct Student) = sizeof(name) + sizeof(age) + sizeof(score)                                 = 20 + 4 + 4                                 = 28

由于結(jié)構(gòu)體可能存在內(nèi)存對齊的問題,因此sizeof計算結(jié)果可能會比實際使用的內(nèi)存空間稍微大一些。

相關(guān)推薦

電子產(chǎn)業(yè)圖譜