聯合 C程式設計

2021-06-16 06:53:35 字數 902 閱讀 2249

好了今天我們來看一下聯合

聯合(union)與結構(structure)是截然不同的。聯合的宣告和結構類似,但他的

行為和方式卻和結構有很大的不同。聯合的所有成員引用的是記憶體中的同一位址。

這就提示我們在什麼時候可以使用聯合:當你想在不同的時刻把不同的資料儲存到

記憶體的同一位置的時候就可以使用聯合。

let''''''''s go

union fi;

和結構的宣告有點類似,我們這樣就宣告了乙個簡單的聯合,在乙個浮點和整型都是

32位的機器上,變數fi只佔據記憶體中的乙個32位的字。如果成員f被使用,這個字就

作為浮點值訪問;如果成員i被使用,這個字就作為整型值來訪問。

我們可以使用如下方法來訪問:

fi.f =6.2535;

printf("%d\n",fi.i);

首先把浮點數6.2535儲存在fi中,然後以整型值來讀取fi中的內容。

注意他們訪問的值同一位址,而且二進位制內容是相同的,只不過乙個

當做浮點型別來解析,而另乙個則把它當做整型來解析。所以對於同乙個二進位制數

得到的結構卻是不同的!

聯合的初始化

在宣告時就可以對聯合進行初始化,但需要注意,這個初始值必須是聯合第乙個成員的型別

而且他必須位於一對花括號裡面

for example:

union x = ;

這個簡單的宣告同時將x.a初始化為5

我們是不能在初始化時將他初始化為float或char型的

個人感覺聯合主要是用在實現變體記錄中,但是好象不是太簡單,對著一部分

我也不是太熟悉,在這就簡要的給大家介紹這麼多,如果大家又需要的話可以

找本書看看當然也可以和我發郵件,我可以給你發一些相關的資料!

在這小孟還是要謝謝大家的支援!

C程式語言 列舉 結構 聯合

標籤 空格分隔 c 10.1.1 列舉 列舉 常量符號化 列舉 列舉型別名字通常並不真的使用,要用的是在大括號裡的名字,因為它們就是常量符號,它們的型別是int,值則依次從0到n。如 就建立了三個常量,red的值是0,yellow的值是1,green的值是2。當需要一些可以排列起來的常量值時,定義列...

c 與python聯合程式設計一

前段時間做過c 呼叫python程式及其深度學習模型。最近想做個介面程式,將c 和python的處理結果呈現再從c 介面上。於是採用將c 程式 包括呼叫python的模組 全部寫成dll動態庫檔案。呼叫時候發現程式找不到對應的py檔案,除錯了好幾天。發現就算引用py檔案的絕對路徑也不行。錯誤程式及其...

Qt OpenCV聯合程式設計

1 設計介面如下 3 編寫 其中mainwindow.h和mainwindow.cpp檔案內容分別如下 1 mainwindow.h標頭檔案內容 ifndef mainwindow h define mainwindow h include includeusing namespace cv nam...