全面了解結構體 聯合體和列舉型別

2022-10-04 01:42:07 字數 2093 閱讀 9706

一. 結構體:

程式設計客棧1. 定義結構體型別:

struct 結構體

;注意:這不是定義變數,而是自定義一種型別而已。

如struct student

;//此處分號不能少。

2. 定義結構體變數。

型別定義好以後,則可以定義該型別的變數。

定義結構體變數:

struct student a,b;// struct可以省略。

可以在定義結構體變數的時候賦值。

如student a={」liudehua」,172,1},b=;

也可以在定義結構體變數以後賦值,但注意不能再用{}。

如:student a,b;

a={」liudehua」,172,1},b=;//這是錯誤的。

而應該是:

strcpy(a.name,」liudehua」);

a.height=172;

a.***=1;

3.可以在定義結構體型別的時候同時定義結構體變數並賦值。

struct student

a={」liudehua」,172,1},b=;

4.訪問結構體:

訪問結構體成員要用直接成員運算子「.」或間接成員運算子「->」。

student a={」liudehua」,172,1};

cout<

student *p=&a;

cout對於結構體變數,訪問其中的成員採取「結構體變數.成員」的形式;而對於結構體指標,訪問它所指向的結構體變數中的成員,則採取「結構體指標->成員」形式。

二.聯合體

聯合體也是一種自定義的復合型別,它可以包含多個不同型別的變數。這些變數在記憶體當中共用一段空間。這段空間的size就是各變數中size最大的那個變數。

1定義聯合體型別:

union myunion

{int num1;

double num2;

float num3;

};www.cppcns.com定義了乙個聯合體型別myunion。

myunion a,b;//定義了兩個myunion型變數。

也可以在定義聯合體型別的時候定義聯合體變數。

如:union myunion

{int num1;

double num2;

float num3;

}a,b;

a占用的空間有多大呢?

sizeof(a)結果即為8,即myunion占用8個位元組,和double型變數相同。

注意:任一時刻,只能訪問結構體裡面的乙個變數。

a.num1=2;

a.num2=3.154;

myunion *p;

p=&a;

p->num3=5.6;

三.列舉型別

1.列舉型別的定義:

列舉型別也是一種自定義的復合型別。不過,列舉型別中的成員都是常量。

如enum color

{   red,

green,

blue,

white,

black

};列舉型別中的成員預設值為從0開始,依次序遞增。此時red==1,green為2,blue為3,white為4,black為5.

也可以改變起預設值。

如enum color

{   red=1,

green=3,

blue=5,

white,

black

};沒有初始化的列舉型別成員的值將在它前面的成員基礎上遞增。

所以,white的值為6,而black的值為7.

2.定義列舉變數:

color a1,a2;

3.給列舉變數賦值:

&nbs程式設計客棧p;  a1=red;

a2=blue;

cout<

雖然列舉常量的值整數,但是不能直接將整數值賦給列舉變數。

如a1=1;//這是不對的。因為型別不匹配。乙個是整型,乙個是列舉型別。

a1=(color)1;//正確

列舉變數的size是乙個整數的大小。

本文標題: 全面了解結構體、聯合體和列舉型別

本文位址: /ruanjian/c/156200.html

結構體,聯合體和列舉型別

一.結構體 結構體資料的存放 位段的缺點 不具有跨平台性 二.聯合體 三.列舉型別 若沒有位段 先找預設對齊數和每個數的較小值,再在這些較小值中找出最大的,即為最大對齊數.若上個對齊數開闢的空間還有冗餘可以放下下個數,就把下個數也放在這個空間內,如果不夠放下下個數,就把下個數放到下個空間內.當結構體...

結構體 聯合體 列舉

1 結構體struct 結構體的作用 在網路協議 通訊控制 嵌入式系統的c c 程式設計中,我們要傳送的不是簡單的位元組流 char型陣列 二是多種資料組合起來的乙個整體,其表現形式是乙個結構體。使用struct的注意事項 1 下面看乙個題目 結果 6 12 這裡涉及到結構體的記憶體對齊方式。1 關...

結構體 聯合體 列舉

結構體 1.宣告乙個結構體型別的一般形式為 struct 結構體名 成員表列 如 struct student 表示可選項 注 宣告不是定義,故不可對成員列表中的成員進行初始化。定義別名 方法一 如 struct 結構體名 typedef struct 結構體名 別名 方法二 如 typedef s...