無論是基本資料型別還是陣列型別都僅僅描述了事物某一方面的特性, 但是, 一種事物往往具有多方面的屬性, 如乙個同學有學號, 姓名, 性別, 年齡等屬性。c++中的構造資料型別簡單點理解就是將乙個或者幾個資料型別組合起來的。
(在回顧一下比如int、float、double等,叫做基礎型別,或內建型別,而由這些型別做成的、含有多個的組合型別,稱作構造型別,)
c++中,構造型別有一下幾種:
陣列型別、結構體型別、共用體型別、列舉型別、使用者自定義資料型別(類)
這篇文章主要記錄c++結構體的相關知識點
1、結構體之引用結構體成員變數
2、結構體陣列、結構體指標
3、結構體的巢狀
4、結構體之結構體作為函式引數
1、簡單介紹
結構體是乙個可以包含不同資料型別的結構、是一種可以自己定義的資料型別
有下面特點:
1、可以在乙個結構中申明不同的資料型別
2、相同結構的結構體變數是可以相互賦值的
(比較下結構體和陣列型別:
陣列是單一資料型別的 資料集合,它本身不是資料型別但是結構體是。陣列名稱是常量指標,所以不可以作為左值進行運算,即陣列之間不可以通過陣列名稱相互賦值,儘管陣列資料型別和陣列大小完全相同
)
與一般的基本資料型別定義一樣,結構體也需要乙個關鍵字struct關鍵字,定義語法如下:
struct 結構體名
;例子1:struct student
例子2:成員變數是結構體資料型別的情況
例子2:
struct point
座標軸上直線的資訊
struct line
通過結構體建立變數的方式有三種:
1、先定義結構體型別,在單獨定義變數型別
struct 結構體名 變數名
struct student
intmain()
struct student
intmain()
;}
3、 定義結構體時順便建立變數
struct student stu;
//結構體變數建立方式3
intmain()
為一種資料型別定義乙個新名字。這裡的資料型別包括內部資料型別(int,char等)和自定義的資料型別(struct等),(注意與#define的區別,typedef 是用來定義一種型別的新別名的,它不同於巨集#define,巨集是簡單的字串替換)
例:
1typedef
int integer;
為int定義了乙個新的名字integer,也就是說integer與int是同義詞
也可以為結構體定義乙個別名
typedef
struct student student;
或者 typedef
struct student
student;
上述兩條語句是等價的,二者都是為struct student結構體型別定義了乙個新的名字student,即student與struct student是同義詞
student stu1,stu2;
struct student stu1, stu2;
資料型別之結構體
結構體是構造資料型別的一種 在c語言中,結構體是一種非常重要的資料型別。封裝多個不同型別的元素,作為互動的乙個介面 互動這塊,結構體變數可以作為資料結構中的乙個節點,可以作為網路通訊中傳送的訊息的封裝,可以作為核心中檔案屬性的封裝,可以作為驅動中對裝置檔案操作的封裝.也就是說,驅動,核心,應用方面都...
C語言資料型別大小和結構體中變數
注釋 本博文介紹十分詳細,本人收益良多,特此收藏。出處 源自網路,原始出處未知。c語言資料型別大小和結構體中變數的位址分配方法 資料型別 char short int long float double long double gcc3.2.2 1 2 4 4 4 8 12 visual c 1 2...
結構體中資料型別對齊 完解
參考 三步解決c語言中struct位元組對齊問題 結構體對齊規則 先介紹三個概念 自身對齊值 指定對齊值 有效對齊值。自身對齊值 資料型別本身的對齊值,例如char型別的自身對齊值是1,short型別是2 指定對齊值 編譯器或程式設計師指定的對齊值,32位微控制器的指定對齊值預設是4 有效對齊值 自...