資源描述:
《面向?qū)ο蟪绦蛟O(shè)計(jì).ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、面向?qū)ο蟪绦蛟O(shè)計(jì)第十章結(jié)構(gòu)§10.1結(jié)構(gòu)§10.2結(jié)構(gòu)與指針§10.3結(jié)構(gòu)與數(shù)組§10.4傳遞結(jié)構(gòu)參數(shù)§10.5結(jié)構(gòu)函數(shù)§10.6鏈表結(jié)構(gòu)§10.7聯(lián)合(Union)小結(jié)7/18/20212前面已介紹了整型、實(shí)型、字符型等基本數(shù)據(jù)結(jié)構(gòu)。介紹了處理相同數(shù)據(jù)類型數(shù)據(jù)集合的數(shù)組。對(duì)于處理具有某種聯(lián)系,可以由不同類型的數(shù)據(jù)項(xiàng)組成的復(fù)雜數(shù)據(jù)類型,C++稱為結(jié)構(gòu)。本章內(nèi)容包括結(jié)構(gòu)類型及變量的定義,訪問(wèn)結(jié)構(gòu)的成員方法,結(jié)構(gòu)作為參數(shù)傳遞的函數(shù)調(diào)用及返回結(jié)構(gòu)的函數(shù)等。7/18/2021310.1結(jié)構(gòu)一、結(jié)構(gòu)及結(jié)構(gòu)變
2、量的定義結(jié)構(gòu)是用戶自定義的新數(shù)據(jù)類型。聲明結(jié)構(gòu)類型時(shí),首先指定關(guān)鍵字struct和結(jié)構(gòu)名,然后用一對(duì)花括號(hào)將若干個(gè)結(jié)構(gòu)成員數(shù)據(jù)類型說(shuō)明括起來(lái)。例如,要表示一個(gè)單位職工的收入情況,需要記錄每個(gè)職工的姓名、年齡、工資等信息。當(dāng)用結(jié)構(gòu)類型表示時(shí),結(jié)構(gòu)中應(yīng)包括一個(gè)字符串分量(表示姓名),一個(gè)整型分量(表示年齡),一個(gè)浮點(diǎn)型分量(表示工資)。按C++規(guī)定,可做如下定義:structperson{charname[10];intage;floatwage;};7/18/20214其中,struct是關(guān)鍵字;p
3、erson是自定義的結(jié)構(gòu)類型的名稱;花括號(hào)中是結(jié)構(gòu)成員的說(shuō)明。person結(jié)構(gòu)類型被定義后,從使用角度看,就等效于int,char,float等基本數(shù)據(jù)類型。類型定義通常位于main()函數(shù)之前,使該類型在定義點(diǎn)后面的程序中可見(jiàn)。要使用結(jié)構(gòu)變量也必須先定義后使用,例如:personworker;聲明一個(gè)結(jié)構(gòu)并不分配內(nèi)存,內(nèi)存分配發(fā)生在定義這個(gè)新數(shù)據(jù)類型的變量中。變量一旦定義,編譯器將為woker變量分配包含三種不同數(shù)據(jù)類型成員的存儲(chǔ)空間name…………age…………wage…………7/18/202
4、15二、結(jié)構(gòu)成員的訪問(wèn)一旦通過(guò)定義相應(yīng)結(jié)構(gòu)變量,分配了空間,就可以使用點(diǎn)操作符“.”(或稱結(jié)構(gòu)成員操作符)來(lái)訪問(wèn)結(jié)構(gòu)中的成員。左操作數(shù)為結(jié)構(gòu)類型變量,右操作數(shù)為結(jié)構(gòu)中的成員。一般形式:結(jié)構(gòu)變量名.結(jié)構(gòu)成員名例如:worker.age=25;cin>>worker.age;cin>>worker.wage;下面是一個(gè)定義結(jié)構(gòu)類型和變量的簡(jiǎn)單例子:7/18/20216#includestructweather{floattemp;intwind;};voidmain(){wea
5、thertoday;today.temp=25.5;today.wind=4;cout<<“Temp=”<structperson{charname[20];longid;floatsalary;};perso
6、npr1{“Liming”,1082422,5300.0};7/18/20218voidmain(){personpr2;pr2=pr1;//assigningpr1topr2cout<7、18/2021910.2結(jié)構(gòu)與指針結(jié)構(gòu)變量的成員可以通過(guò)點(diǎn)操作符進(jìn)行訪問(wèn),也可以通過(guò)指針進(jìn)行訪問(wèn)。若定義一個(gè)結(jié)構(gòu)指針,并把一個(gè)結(jié)構(gòu)變量的地址賦給它,則通過(guò)該指針可對(duì)結(jié)構(gòu)變量的成員進(jìn)行訪問(wèn)。結(jié)構(gòu)指針定義格式如下:person*p;//定義指向結(jié)構(gòu)類型的指針personpr1;//定義結(jié)構(gòu)類型變量若p=&pr1;則p是指向結(jié)構(gòu)變量pr1的結(jié)構(gòu)指針,為訪問(wèn)成員,可寫(xiě)成:(*p).name等效于p->name;(*p).id等效于p->id;(*p).salary等效于p->salary.7/18/202
8、110在使用指針訪問(wèn)成員時(shí),通常使用箭頭操作符“->”。例如:下面程序中,定義了結(jié)構(gòu)指針,通過(guò)結(jié)構(gòu)指針訪問(wèn)結(jié)構(gòu)成員。#include#includestrutperson{charname[20];longid;floatsalary;};7/18/202111voidmain(){personpr1;person*p;p=&pr1;strcpy(p->name,“Wangming”);p->id=12345678;p->salary=4