c++除了提供多種基本的資料型別(如
int、
float
、double
、char等)
供使用者使用外,還允許使用者根據需要自己宣告一些型別,例如陣列、結構體
(structure)
型別、共用體
(union)
型別、列舉
(enumeration)
型別、類
(class)
型別等,這些統稱為
使用者自定義型別
(user-defined
type,udt)。
1 結構體型別
c++將使用者自己指定的、包含有若干個型別不同或相同資料項的這樣一種組合項資料型別稱為
結構體。
宣告乙個結構體型別的一般形式為:
struct
結構體型別名
{成員列表};
宣告結構體型別的位置一般在檔案的開頭,在所有函式(包括
main函式)
之前,以便本檔案中所有的函式都能利用它來定義變數。當然也可以在函式中宣告結構體型別。
c++結構體的成員既可以包括資料
(即資料成員
),又可以包括函式
(即函式成員
),以適應物件導向的程式設計。但是由於
c++提供了類
(class)
型別,因此,一般情況下,結構體只含有資料成員而不帶函式。
2 結構體型別變數的定義方法及其初始化
宣告的結構體型別相當於乙個模型,它沒有具體的資料,系統也不為其分配實際的記憶體單元。為了能在程式中使用結構體型別的資料,應當定義結構體型別的變數,並在其中存放具體的資料。
1.定義結構體型別變數的方法(3
種) (1
) 先宣告結構體型別再定義變數名
(2)在宣告型別的同時定義變數
定義的一般形式為
struct
結構體名
變數名列表;
(3)直接定義結構體型別變數
定義的一般形式為
struct;
enum
weekday;
定義列舉變數的一般形式為
列舉型別名 列舉變數名;
說明:(1)
對列舉元素按常量處理,故稱列舉常量。
(2)
列舉元素作為常量,它們是有值的,
c++編譯按定義時的順序對它們賦值為
0,1,2,3,…
。也可以在宣告列舉型別時另行指定列舉元素的值。
(3)
列舉值可以用來做判斷比較。
(4)
乙個整數不能直接賦給乙個列舉變數。
4用typedef
宣告型別
typedef
是用來宣告乙個新的型別名以代替已有的型別名。
①typedef
intintege; //
用識別符號
integer
代表int
型別integer
i,j;
//等價於
inti,j
;
說明:習慣上常把用
typedef
宣告的型別名用大寫字母表
示,以便與系統提供的標準型別識別符號相區別。
(1)
typedef
可以宣告各種型別名,但不能用來定義變數。用
typedef
可以宣告陣列型別、字串型別,使用比較方便。
(2)
用typedef
只是對已經存在的型別增加乙個型別名,而沒有創造新的型別。
(3)
當在不同原始檔中用到同一型別資料(尤其是像陣列、指標、結構體、共用體等型別資料)時,常用
typedef
宣告一些資料型別,把它們單獨放在乙個標頭檔案中,然後在需要用到它們的檔案中用#
include
命令把它們包含進來,以提高程式設計效率。
(4)
使用typedef
有利於程式的通用與移植。有時程式會依賴於硬體特性,用
typedef
便於移植。
C 自定義資料型別
c 中有以下幾種自定義資料型別方式 typedef union enum typedef只是用於重新命名一種已有的資料型別。typedef char c c c即char c typedef char field 50 field s即char 50 注意第二種用法,陣列的維數 50 是寫在最後的。...
自定義資料型別
include include using namespace std typedef double weight,tall struct student int main cout for int i 0 i 4 i return 0 貼上正確的輸出 這裡tall和weight都是自己可以輸入的 ...
C 高階資料型別(六) 自定義資料型別
前面我們已經看到過一種使用者 程式設計師 定義的資料型別 結構。除此之外,還有一些其它型別的使用者自定義資料型別 c 允許我們在現有資料型別的基礎上定義我們自己的資料型別。我們將用關鍵字typedef來實現這種定義,它的形式是 typedef existing type new type name ...