欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

結(jié)構(gòu)體和聯(lián)合體的區(qū)別及說明

 更新時間:2025年01月07日 09:33:29   作者:嵌入式學習菌  
文章主要介紹了C語言中的結(jié)構(gòu)體和聯(lián)合體,結(jié)構(gòu)體是一種自定義的復(fù)合數(shù)據(jù)類型,可以包含多個成員,每個成員可以是不同的數(shù)據(jù)類型,聯(lián)合體是一種特殊的數(shù)據(jù)結(jié)構(gòu),可以在內(nèi)存中共享同一段存儲空間來存儲不同類型的數(shù)據(jù)

結(jié)構(gòu)體和聯(lián)合體的區(qū)別

1. 結(jié)構(gòu)體(Struct)

在 C 語言中,結(jié)構(gòu)體是一種自定義的復(fù)合數(shù)據(jù)類型,允許將不同數(shù)據(jù)類型的變量組合成一個單一的實體。結(jié)構(gòu)體可以包含多個成員,每個成員可以是不同的數(shù)據(jù)類型,如整數(shù)、浮點數(shù)、字符、數(shù)組等。

結(jié)構(gòu)體的定義通常在函數(shù)外部,并且在函數(shù)內(nèi)部可以聲明和使用結(jié)構(gòu)體類型的變量。結(jié)構(gòu)體的定義包含了結(jié)構(gòu)體的名稱和結(jié)構(gòu)體成員的列表,每個成員都有一個名稱和一個數(shù)據(jù)類型。結(jié)構(gòu)體的成員可以通過成員運算符(.)來訪問。

以下是一個簡單的 C語言 結(jié)構(gòu)體的示例:

#include <stdio.h>

// 定義一個名為Student的結(jié)構(gòu)體
struct Student {
int roll_no; // 學號
char name[50]; // 姓名
int age; // 年齡
float score; // 分數(shù)
};

int main() {
// 聲明并初始化一個Student類型的結(jié)構(gòu)體變量
struct Student student1 = {101, "Alice", 20, 95.5};

// 訪問結(jié)構(gòu)體成員并輸出
printf("Roll No: %d\n", student1.roll_no);
printf("Name: %s\n", student1.name);
printf("Age: %d\n", student1.age);
printf("Score: %.2f\n", student1.score);

return 0;
}

2. 聯(lián)合體(Union)

在 C 語言中,聯(lián)合體是一種特殊的數(shù)據(jù)結(jié)構(gòu),可以在內(nèi)存中共享同一段存儲空間來存儲不同類型的數(shù)據(jù)。與結(jié)構(gòu)體類似,聯(lián)合體也是一種用戶自定義的數(shù)據(jù)類型,可以包含多個不同類型的成員變量。

聯(lián)合體的定義使用關(guān)鍵字‘union’,后面緊跟聯(lián)合體的名稱和一對花括號,括號中定義了聯(lián)合體的成員變量,每個成員變量有自己的名稱和數(shù)據(jù)類型。

#include <stdio.h>

// 定義一個聯(lián)合體
union Data {
int i;
float f;
char c;
};

int main() {
union Data data; // 聲明一個聯(lián)合體變量data

data.i = 42; // 給聯(lián)合體的整數(shù)成員賦值
printf("data.i = %d\n", data.i); // 輸出整數(shù)成員的值

data.f = 3.14; // 給聯(lián)合體的浮點數(shù)成員賦值
printf("data.f = %.2f\n", data.f); // 輸出浮點數(shù)成員的值

data.c = 'A'; // 給聯(lián)合體的字符成員賦值
printf("data.c = %c\n", data.c); // 輸出字符成員的值

// 注意:聯(lián)合體的不同成員共享同一塊內(nèi)存空間,賦值一個成員會影響其他成員的值
printf("data.i = %d, data.f = %.2f, data.c = %c\n", data.i,data.f, data.c);
//data.i = 1078523201, data.f = 3.14, data.c = A

return 0;
}

3. 聯(lián)合體與結(jié)構(gòu)體的區(qū)別

結(jié)構(gòu)體聯(lián)合體
關(guān)鍵字structunion
成員多個成員多個成員
存放每個成員都有自己的內(nèi)存空間所有成員共用同一塊內(nèi)存空間

4. 實例分析

  • 定義聯(lián)合體

  • main.c

調(diào)試過程中,可以看到各個變量:

這說明聯(lián)合體所有成員都存儲在同一個空間中,每個成員不可能同時使用。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺談C#中的值類型和引用類型

    淺談C#中的值類型和引用類型

    在C#中值類型的變量直接存儲數(shù)據(jù),而引用類型的變量持有的是數(shù)據(jù)的引用,數(shù)據(jù)存儲在數(shù)據(jù)堆中。下面我們來簡單談?wù)凜#中的值類型和引用類型
    2016-06-06
  • C#實現(xiàn)文件上傳下載Excel文檔示例代碼

    C#實現(xiàn)文件上傳下載Excel文檔示例代碼

    這篇文章主要介紹了C#實現(xiàn)文件上傳下載Excel文檔示例代碼,需要的朋友可以參考下
    2017-08-08
  • 關(guān)于C#連接FTP時路徑問題的解決方法

    關(guān)于C#連接FTP時路徑問題的解決方法

    最近在工作中遇到一個需求,需要利用C#連接FTP,在連接過程中遇到一個問題,所以下面這篇文章主要給大家介紹了關(guān)于C#連接FTP時路徑問題的解決方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08
  • C#中免費密碼庫BouncyCastle的使用詳解

    C#中免費密碼庫BouncyCastle的使用詳解

    這篇文章主要來和大家分享一個C#版開源、免費的Bouncy?Castle密碼庫:BouncyCastle,文中介紹了BouncyCastle的具體使用,需要的可以參考下
    2024-03-03
  • C#實現(xiàn)根據(jù)數(shù)字序號輸出星期幾的簡單實例

    C#實現(xiàn)根據(jù)數(shù)字序號輸出星期幾的簡單實例

    這篇文章主要介紹了C#實現(xiàn)根據(jù)數(shù)字序號輸出星期幾的簡單實例,代碼簡潔實用,也有助于初學者更好的理解C#的switch和if語句的流程控制,需要的朋友可以參考下
    2014-07-07
  • C#編程之事務(wù)用法

    C#編程之事務(wù)用法

    這篇文章主要介紹了C#編程之事務(wù)用法,結(jié)合實例形式對比分析了C#中事務(wù)提交與回滾的具體實現(xiàn)技巧與相關(guān)注意事項,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • 詳解c# 數(shù)組(Array)

    詳解c# 數(shù)組(Array)

    這篇文章主要介紹了c# 數(shù)組的的相關(guān)資料,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • C# 動畫窗體(AnimateWindow)的小例子

    C# 動畫窗體(AnimateWindow)的小例子

    C# 動畫窗體(AnimateWindow)的小例子,需要的朋友可以參考一下
    2013-03-03
  • C# 標準事件流實例代碼

    C# 標準事件流實例代碼

    這篇文章主要介紹了C# 標準事件流的實例代碼,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • c#中Linq to Sql 增刪除的實例

    c#中Linq to Sql 增刪除的實例

    c#中Linq to Sql 增刪除的實例,需要的朋友可以參考一下
    2013-05-05

最新評論