好了今天我們來看一下聯合
聯合(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...