對於C語言中的自定義型別的詳細解釋 乾貨

2021-10-17 11:05:52 字數 1717 閱讀 5456

對於位段,我們有兩個要求:

1.必須是int / unsigned int / signed int三種型別的

2.在每乙個成員的後面必須含有冒號和數字

只有具有了這兩個條件,才能被稱之為位段,

如下面例題:

struct a

;

這就是乙個簡單的位段,只要滿足上面這兩個要求,我們都可以稱之為位段

printf

("%d\n"

,sizeof

(struct a))

;//求乙個位段所佔的位元組

位段是乙個相對於來說存在較多的東西,我們只需要進行了解,可以認識就行了

列舉相對於來說就是乙個可以一一進行舉例出來的結構體,乙個星期裡面將周一到周天都可以分別舉例出來,性別裡面可以將男生和女生分別舉例出來.,在一組列舉裡面如果沒有給賦值,那就預設從0開始,依次遞增1,使用列舉有下面幾個優點:

1.讓**可以更容易的理解

2.有效的封裝

3.一次可以定義多個常量

enum ***

;

上面是乙個簡單的關於性別的列舉,因為我們給第乙個male進行了賦值,所以後面兩個依次就是101 和102,下面列印出來的也一樣

enum *** s =

male

;//或者進行別名的的定義

printf

("%d\n"

,s);

s=99

;//注意這個方式是錯誤的,這裡的99是乙個整型的型別,而這裡的s是乙個***的型別,型別不同,不能進行直接的賦值.

printf

("%d\n"

,female);

printf

("%d\n"

,unknown

);

上面是對列舉可以進行其他名字的定義,列印出來的值和之前也是一樣的,有點像指標,大家可以試著理解.

注意這裡的s=99是錯誤的,具體看注釋.

聯合體也是乙個比較特殊的自定義型別,因為它內部的成員公用的同一塊空間,所以才叫做聯合體.

對於聯合體而言,它在各個方面的牽制有點多,所以我們只需要知道,會簡單的利用就行了.

union test

;

這就是聯合體,聯合體必須有union這個關鍵字,下面是簡單的運用

union test t;

//!!!!!這裡是對於聯合體的乙個宣告,如果未在主函式中宣告,下面的步驟都不能進行執行

t.c =

0x11223344

;//簡單的賦予位址

printf

("%x\n"

,t.c)

;//%x是列印位址

t.a =

0x66

;//修改位址

printf

("%x\n"

,t.c)

;//再次列印

對於自定義型別我們在平常並不會經常的用到,就是在一些面試題上會運用到,我們知道一些基礎的知識就可以了.

C語言中的自定義型別 enum列舉

列舉在c語言中其實是一些符號常量集。列舉定義了一些符號,這些符號的本質就是int型別的常量,每個符號和乙個常量繫結。這個符號就表示乙個自定義好的乙個識別碼,編譯器對列舉的認知就是符號常量所繫結的那個int型別的數字。例如可以使用數字1 2 3 4 5 6 7來代表周一到週末,但是純數字並不直觀,這個...

C語言中的自定義函式

c語言中可以使用系統函式也可以使用自己的函式,就是自定義函式 自定義函式分為四種 第一種 無參無返回值的 函式的宣告 void sayh 函式的實現 void sayh 第二種 有引數無返回值 函式的宣告 void pxsbx int c,int k 函式的實現 void pxsbxx int c,...

C語言中的自定義型別 struct結構體

c語言中的2種型別 原生型別 如int char等 和自定義型別 struct,enum等 結構體型別是是c語言中的使用者自定義型別,主要功能是對功能相關的資料進行封裝,它是乙個或多個變數的集合,這些變數的型別可以不同。例如一名學生可以由姓名和性別來描述,結構體中的成員也可以是乙個結構體,例如名字由...