1. 程式人生 > >數據封裝-結構體

數據封裝-結構體

ber 空間 類型 聚合 這樣的 區別 可靠 描述 創建

結構體類型作用

*結構體類型允許程序員把一些分量聚合成一個整體,用一個變量表示。 *一個結構體的各個分量都有名字,把這些分量稱為成員(member)。 *由於結構體的成員可以是各種類型的,程序員能創建適合於問題的數據集合。 結構體類型的定義 *定義結構體類型中包括哪些分量 *格式: struct 結構體類型名{ 字段聲明; }; 註意 *字段名可與程序中的變量名相同 *在不同的結構體中可以有相同的字段名 *結構體成員的類型可以是任意類型,當然也可以是結構體類型 結構體變量的初始化 studentT student1={“00001”,“張三”,87,90,77}; 定義結構體類型的同時定義變量
struct 結構體類型名{ struct{   字段聲明;   字段聲明; }結構體變量; }結構體變量; 區別:前者可以繼續用結構體類型名定義變量 結構體變量的賦值 同類型的結構變量之間可以相互賦值,如 student1=student2; 將student2的成員對應賦給student1的成員 這點很重要!! 指向結構體的指針 *直接定義指針變量

studentT *sp;

*也可以在定義結構體類型的同時定義指向結構體的指針

struct 結構體類型名{

字段聲明;

} *結構體指針;

通過指針操作記錄

*給結構體指針賦值,如:

sp = &student1;

*結構體指針的引用:

(*指針).成員 如:(*sp).name

指針->成員 如:sp->name

*->是所有運算符中優先級最高的

*通常程序員習慣使用第二種方法 動態分配結構體的空間 v指向結構體指針的另一種用法是存儲動態申請到的內存的首地址。用法和申請普通的動態變量一樣。如:

studentT *sp;

sp = new studentT;

結構體數組

*用於描述個體的集合

*定義格式:

studentT studentArray[SIZE]

指針與結構體數組

*與普通的指針一樣,指向結構體的指針也能夠用來指向一個結構體數組。此時,對指針加1就是加了該結構體的大小。 指向結構體的指針作為參數 *因為結構體是值傳遞,當希望把函數內部對結構體的修改返回給主調函數時,可以用指針傳遞或引用傳遞 *由於結構體一般占用的內存量都比較大,值傳遞既浪費空間又浪費時間。因此可用指針傳遞或引用傳遞 *指針傳遞形式比較繁瑣,所以C++通常用引用傳遞 *引用傳遞的問題是函數中可以修改實際參數,要控制函數中不能修改實際參數,可以加const限定 引用傳遞&加const=節約內存,提高函數調用速度,安全可靠 函數返回結構體返回的是結構體的復制(對類而言也是如此,這樣的話就會調用拷貝構造函數)

數據封裝-結構體