自定義數據類型
一、結構體類型
1、 C++允許用戶自己定義一組包含若干個類型不同(或相同)的數據項的數據類型,稱為結構體。
2、 聲明符號:struct
3、 一般形式:struct 結構體類型名{成員表列};
4、 結構體類型名用來作結構體類型的標志。
5、 結構體中的每個成員也稱為結構體中的一個域。成員表列又稱為域表。
6、 聲明結構體類型的位置一般在文件的開頭,在所有函數之前。
7、 C++提供了類類型,所以在一般情況下,不必使用帶函數的結構體。
二、結構體類型變量的定義方法及其初始化
1、 定義結構體類型變量的方法:
a) 先聲明結構體類型再定義變量名
結構體類型名 結構體變量名
Student student1;
C語言中結構體類型名前面加上關鍵字struct
C++中可以省略
Student1中具有Student中同樣的屬性
b) 在聲明類型的同時定義變量
一般形式:
struct 結構體名
{
成員表列
}變量名表列;
c) 直接定義結構體類型變量
一般形式:
struct //沒有結構體類型名
{
成員表列
}變量名表列;
這種方式雖然合法,但很少使用。提倡先定義類型後定義變量的第一種方法.
說明:
1、 不是所有的結構體類型都有相同的結構。
2、 類型與變量是不同的概念,只能對結構體變量中的成員賦值,不能對結構體類型賦值。在編譯時,不會對類型分配空間,只為變量分配空間。
3、 結構體中的成員可以單獨使用,它的作用與地位相當於普通變量。
4、 成員也可以是一個結構體變量。
5、 #include<iostream>
6、 usingnamespace std;
7、
8、 struct Date //聲明一個結構體類型Date
9、 {
10、 int month;
11、 int day;
12、 int year;
13、 };
14、 struct Student //聲明一個結構體類型Student
15、 {
16、 int num;
17、 char name[20];
18、 char sex;
19、 int age;
20、 Datebirthday; //Date是結構體類型,birthday是Date類型的成員
21、 char addr[30];
22、 }student1={},student2;//定義student1和student2為結構體類型Student的變量
首先聲明了一個Date類型,具有三個成員month,day,year。然後聲明Student類型,將成員birthday指定為Date類型,即birthday作為Date結構體類型名的結構體變量,具有month,day,year三個屬性。
5、結構體中的成員名可以與程序中的變量名相同,但二者沒有關系,互不影響。