C++第6章 數(shù)組指針與字符串
《C++第6章 數(shù)組指針與字符串》由會員分享,可在線閱讀,更多相關《C++第6章 數(shù)組指針與字符串(110頁珍藏版)》請在裝配圖網上搜索。
1、C+語言程序設計(第4版)第六章第六章 數(shù)組數(shù)組 指針與字符串指針與字符串C+語言程序設計(第4版),鄭莉,清華大學目錄6.1 數(shù)組數(shù)組6.2 指針指針6.3 動態(tài)內存分配動態(tài)內存分配6.4 用用vector創(chuàng)建數(shù)組對象創(chuàng)建數(shù)組對象6.5 深拷貝與淺拷貝深拷貝與淺拷貝6.6 字符串字符串6.9 小結小結2C+語言程序設計(第4版),鄭莉,清華大學數(shù)組的概念數(shù)組數(shù)組是具有一定是具有一定順序關系順序關系的若干的若干相同類型變量的相同類型變量的集合體集合體,組成數(shù)組的變量稱為該數(shù)組的,組成數(shù)組的變量稱為該數(shù)組的元素元素。數(shù)組屬于構造類型。數(shù)組屬于構造類型。36.1 數(shù)組C+語言程序設計(第4版),鄭
2、莉,清華大學6.1.1 數(shù)組的聲明與使用數(shù)組的聲明數(shù)組的聲明46.1 數(shù)組類型說明符類型說明符 數(shù)組名數(shù)組名 常量表達式常量表達式 常量表達式常量表達式 ;數(shù)組名的構成方法與一般變量名相同。數(shù)組名的構成方法與一般變量名相同。例如:例如:int a10;表示表示a為整型數(shù)組,有為整型數(shù)組,有10個元素:個元素:a0.a9例如例如:int a53;表表示示a為為整整型型二二維維數(shù)數(shù)組組,其其中中第第一一維維有有5個個下下標標(04),第第二二維維有有3個個下下標標(02),數(shù)數(shù)組組的的元元素素個數(shù)為個數(shù)為15,可以用于存放,可以用于存放5行行3列的整型數(shù)據(jù)表格。列的整型數(shù)據(jù)表格。C+語言程序設計(
3、第4版),鄭莉,清華大學6.1.1 數(shù)組的聲明與使用(續(xù))引用必須必須先聲明先聲明,后使用。,后使用。只能逐個引用數(shù)組只能逐個引用數(shù)組元素元素,而不能一次引用整個數(shù)組,而不能一次引用整個數(shù)組例如:例如:a0=a5+a7-a2*3例如:例如:b12=a23/256.1 數(shù)組C+語言程序設計(第4版),鄭莉,清華大學66.1 數(shù)組 6.1.1 數(shù)組的聲明與使用例6-1#include using namespace std;int main()int a10,b10;for(int i=0;i 10;i+)ai=i*2-1;b10-i-1=ai;for(int i=0;i 10;i+)cout a
4、 i =ai ;cout b I =bi endl;return 0;C+語言程序設計(第4版),鄭莉,清華大學76.1 數(shù)組6.1.2 數(shù)組的存儲與初始化一維數(shù)組的存儲一維數(shù)組的存儲數(shù)組元素數(shù)組元素在內存中順次存放,它們的在內存中順次存放,它們的地址是連續(xù)的地址是連續(xù)的。例如:例如:a0a1a2a3a4a5a6a7a8a9a數(shù)組數(shù)組名字名字是數(shù)組是數(shù)組首元素的內存地址首元素的內存地址。數(shù)組名是一個數(shù)組名是一個常量常量,不能被賦值。,不能被賦值。C+語言程序設計(第4版),鄭莉,清華大學86.1 數(shù)組6.1.2 數(shù)組的存儲與初始化(續(xù))一維數(shù)組的初始化一維數(shù)組的初始化可以在定義數(shù)組的同時賦給初
5、值:可以在定義數(shù)組的同時賦給初值:在聲明數(shù)組時對數(shù)組元素賦以初值。在聲明數(shù)組時對數(shù)組元素賦以初值。例如:例如:static int a10=0,1,2,3,4,5,6,7,8,9;可以只給一部分元素賦初值??梢灾唤o一部分元素賦初值。例如:例如:static int a10=0,1,2,3,4;在對全部數(shù)組元素賦初值時,可以不指定數(shù)組長度。在對全部數(shù)組元素賦初值時,可以不指定數(shù)組長度。例如:例如:static int a=0,1,2,3,4,5,6,7,8,9C+語言程序設計(第4版),鄭莉,清華大學96.1 數(shù)組6.1.2 數(shù)組的存儲與初始化(續(xù))二維數(shù)組的存儲二維數(shù)組的存儲按行存放按行存放例
6、如:例如:float a34;其中數(shù)組其中數(shù)組a的存儲順序為:的存儲順序為:a0a00 a01 a02 a03a1a10 a11 a12 a13a2a20 a21 a22 a23a可以理解為可以理解為:a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23C+語言程序設計(第4版),鄭莉,清華大學106.1 數(shù)組6.1.2 數(shù)組的存儲與初始化(續(xù))二維數(shù)組的初始化二維數(shù)組的初始化將所有數(shù)據(jù)寫在一個將所有數(shù)據(jù)寫在一個內,按順序賦值內,按順序賦值例如:例如:static int a34=1,2,3,4,5,6,7,8,9,10,11,12;分行給二維數(shù)組賦初
7、值分行給二維數(shù)組賦初值例如:例如:static int a34 =1,2,3,4,5,6,7,8,9,10,11,12;可以對部分元素賦初值可以對部分元素賦初值例如:例如:static int a34=1,0,6,0,0,11;C+語言程序設計(第4版),鄭莉,清華大學116.1 數(shù)組 6.1.2 數(shù)組的存儲與初始化例:數(shù)組處理求Fibonacci數(shù)列#include using namespace std;int main()int f20=1,1;/初始化第初始化第0、1個數(shù)個數(shù) for(int i=2;i 20;i+)/求第求第219個數(shù)個數(shù) fi=fi-2+fi-1;for(i=0;i
8、20;i+)/輸出,每行輸出,每行5個數(shù)個數(shù) if(i%5=0)cout endl;cout.width(12);/設置輸出寬度為設置輸出寬度為12 cout fi;return 0;C+語言程序設計(第4版),鄭莉,清華大學126.1 數(shù)組 6.1.2 數(shù)組的存儲與初始化運行結果:運行結果:1 11 12 23 35 58 81313212134345555898914414423323337737761061098798715971597258425844181418167656765C+語言程序設計(第4版),鄭莉,清華大學補充舉例補充舉例:一維數(shù)組應用一維數(shù)組應用循循環(huán)環(huán)從從鍵鍵盤盤讀
9、讀入入若若干干組組選選擇擇題題答答案案,計計算算并并輸輸出出每每組答案的正確率,直到輸入組答案的正確率,直到輸入ctrl+z為止。為止。每組連續(xù)輸入每組連續(xù)輸入5個答案,每個答案可以是個答案,每個答案可以是a.d。輸入字符數(shù)據(jù)的實現(xiàn)方法:輸入字符數(shù)據(jù)的實現(xiàn)方法:cin.get()可以用來接收字符??梢杂脕斫邮兆址?。當從鍵盤上輸入一串字符并按回車后,這些字符會當從鍵盤上輸入一串字符并按回車后,這些字符會首先被送到輸入緩沖區(qū)中存儲。每當按下回車鍵后,首先被送到輸入緩沖區(qū)中存儲。每當按下回車鍵后,cin.get()就會檢測就會檢測 輸入緩沖區(qū)中是否有了可讀的數(shù)輸入緩沖區(qū)中是否有了可讀的數(shù)據(jù)。據(jù)。ci
10、n.get()還會對鍵盤上是否有作為流結束標志的還會對鍵盤上是否有作為流結束標志的 Ctrl+Z 鍵按下作出檢查。鍵按下作出檢查。136.1 數(shù)組 6.1.2 數(shù)組的存儲與初始化C+語言程序設計(第4版),鄭莉,清華大學#include using namespace std;int main()const char KEY =a,c,b,a,d;const int NUM_QUES=5;char c;int ques=0,numCorrect=0;cout Enter the NUM_QUES“question tests:endl;while(cin.get(c)if(c!=n)if(c=
11、KEY ques)numCorrect+;cout “;else cout*;ques+;else cout Score (float)(numCorrect)/NUM_QUES*100%;ques=0;numCorrect=0;cout endl;return 0;14C+語言程序設計(第4版),鄭莉,清華大學156.1 數(shù)組 6.1.2 數(shù)組的存儲與初始化例(續(xù))運行結果:acbba*Score 60%acbad Score 100%abbda*Score 40%bdcba*Score 0%C+語言程序設計(第4版),鄭莉,清華大學166.1 數(shù)組6.1.3 數(shù)組作為函數(shù)參數(shù)數(shù)組作為函數(shù)參
12、數(shù)數(shù)組元素作實參,與單個變量一樣。數(shù)組元素作實參,與單個變量一樣。數(shù)組名作參數(shù),形、實參數(shù)都應是數(shù)組名,類型數(shù)組名作參數(shù),形、實參數(shù)都應是數(shù)組名,類型要一樣,傳送的是數(shù)組首地址。對形參數(shù)組的改要一樣,傳送的是數(shù)組首地址。對形參數(shù)組的改變會直接影響到實參數(shù)組。變會直接影響到實參數(shù)組。C+語言程序設計(第4版),鄭莉,清華大學例例6-2 使用數(shù)組名作為函數(shù)參數(shù)使用數(shù)組名作為函數(shù)參數(shù)主主函函數(shù)數(shù)中中初初始始化化一一個個矩矩陣陣并并將將每每個個元元素素都都輸輸出出,然然后后調調用用子子函函數(shù)數(shù),分分別別計計算算每每一一行行的的元元素素之之和和,將將和和直直接接存存放放在在每每行行的的第第一一個個元元素
13、素中中,返返回回主主函函數(shù)數(shù)之之后輸出各行元素的和。后輸出各行元素的和。176.1 數(shù)組 6.1.3 數(shù)組作為函數(shù)參數(shù)C+語言程序設計(第4版),鄭莉,清華大學#include using namespace std;void rowSum(int a4,int nRow)for(int i=0;i nRow;i+)for(int j=1;j 4;j+)ai0+=aij;int main()/主函數(shù)主函數(shù)int table34=1,2,3,4,2,3,4,5,3,4,5,6;/聲明并初始化數(shù)聲明并初始化數(shù)組組18例6-2(續(xù))6.1 數(shù)組 6.1.3 數(shù)組作為函數(shù)參數(shù)C+語言程序設計(第4版)
14、,鄭莉,清華大學/輸輸出數(shù)出數(shù)組組元素元素for(int i=0;i 3;i+)for(int j=0;j 4;j+)cout tableij ;cout endl;rowSum(table,3);/調調用子函數(shù),用子函數(shù),計計算各行和算各行和 /輸輸出出計計算算結結果果for(int i=0;i 3;i+)coutSum of row iistablei0endl;return 0;19例例6-2(續(xù)續(xù))6.1 數(shù)組 6.1.3 數(shù)組作為函數(shù)參數(shù)C+語言程序設計(第4版),鄭莉,清華大學20例6-2(續(xù))運行結果:運行結果:1 2 3 42 3 4 53 4 5 6Sum of row 0
15、is 10Sum of row 1 is 14Sum of row 2 is 186.1 數(shù)組 6.1.3 數(shù)組作為函數(shù)參數(shù)C+語言程序設計(第4版),鄭莉,清華大學216.1 數(shù)組6.1.4 對象數(shù)組聲明聲明:類名類名 數(shù)組名數(shù)組名元素個數(shù)元素個數(shù);訪問方法:訪問方法:通過下標訪問通過下標訪問 數(shù)組名數(shù)組名下標下標.成員名成員名C+語言程序設計(第4版),鄭莉,清華大學22對象數(shù)組初始化對象數(shù)組初始化數(shù)組中每一個元素對象被創(chuàng)建時,系統(tǒng)都會調用數(shù)組中每一個元素對象被創(chuàng)建時,系統(tǒng)都會調用類構造函數(shù)初始化該對象。類構造函數(shù)初始化該對象。通過初始化列表賦值。通過初始化列表賦值。例:例:Point a
16、2=Point(1,2),Point(3,4);如果沒有為數(shù)組元素指定顯式初始值,數(shù)組元素如果沒有為數(shù)組元素指定顯式初始值,數(shù)組元素便使用默認值初始化(調用缺省構造函數(shù))。便使用默認值初始化(調用缺省構造函數(shù))。6.1 數(shù)組 6.1.4 對象數(shù)組C+語言程序設計(第4版),鄭莉,清華大學23數(shù)組元素所屬類的構造函數(shù)數(shù)組元素所屬類的構造函數(shù)不聲明構造函數(shù),則采用缺省構造函數(shù)。不聲明構造函數(shù),則采用缺省構造函數(shù)。各元素對象的初值要求為相同的值時,可以聲明各元素對象的初值要求為相同的值時,可以聲明具有默認形參值的構造函數(shù)。具有默認形參值的構造函數(shù)。各元素對象的初值要求為不同的值時,需要聲明各元素對象
17、的初值要求為不同的值時,需要聲明帶形參的構造函數(shù)。帶形參的構造函數(shù)。當數(shù)組中每一個對象被刪除時,系統(tǒng)都要調用一當數(shù)組中每一個對象被刪除時,系統(tǒng)都要調用一次析構函數(shù)。次析構函數(shù)。6.1 數(shù)組 6.1.4 對象數(shù)組C+語言程序設計(第4版),鄭莉,清華大學24例6-3 對象數(shù)組應用舉例/Point.h#ifndef _POINT_H#define _POINT_H class Point/類類的定的定義義 public:/外部接口外部接口 Point();Point(int x,int y);Point();void move(int newX,int newY);int getX()const
18、return x;int getY()const return y;static void showCount();/靜靜態(tài)態(tài)函數(shù)成函數(shù)成員員 private:/私有數(shù)據(jù)成私有數(shù)據(jù)成員員 int x,y;#endif/_POINT_H6.1 數(shù)組 6.1.4 對象數(shù)組C+語言程序設計(第4版),鄭莉,清華大學25例6-3(續(xù))/Point.cpp#include#include Point.husing namespace std;Point:Point()x=y=0;cout Default Constructor called.endl;Point:Point(int x,int y):x
19、(x),y(y)cout Constructor called.endl;Point:Point()cout Destructor called.endl;void Point:move(int newX,int newY)cout Moving the point to(newX ,newY )endl;x=newX;y=newY;6.1 數(shù)組 6.1.4 對象數(shù)組C+語言程序設計(第4版),鄭莉,清華大學26例例6-3(續(xù)續(xù))/6-3.cpp#include Point.h#include using namespace std;int main()cout Entering main.e
20、ndl;Point a2;for(int i=0;i 2;i+)ai.move(i+10,i+20);cout Exiting main.endl;return 0;6.1 數(shù)組 6.1.4 對象數(shù)組C+語言程序設計(第4版),鄭莉,清華大學27例6-3(續(xù))運行結果:運行結果:Entering main.Default Constructor called.Default Constructor called.Moving the point to(10,20)Moving the point to(11,21)Exiting main.Destructor called.Destructo
21、r called.6.1 數(shù)組 6.1.4 對象數(shù)組C+語言程序設計(第4版),鄭莉,清華大學6.2.1 內存空間的訪問方式內存空間的訪問方式內存空間的訪問方式內存空間的訪問方式通過變量名訪問通過變量名訪問通過地址訪問通過地址訪問336.2 指針C+語言程序設計(第4版),鄭莉,清華大學6.2.2 指針變量的聲明指針變量的聲明概念概念指針:內存地址,用于間接訪問內存單元指針:內存地址,用于間接訪問內存單元指針變量:用于存放地址的變量指針變量:用于存放地址的變量聲明聲明例:例:int i;int*ptr=&i;引用引用例例1 1:i=3;例例2 2:*ptr=3;346.2 指針指向整型變量的指
22、針指向整型變量的指針20003ptr*ptri2000內存用戶數(shù)據(jù)區(qū)內存用戶數(shù)據(jù)區(qū)變量 i變量 j變量 ptr362000200020043010C+語言程序設計(第4版),鄭莉,清華大學6.2.3 與地址相關的運算“*”和“&”地址運算符:地址運算符:&例:例:int var;則則&var 表示變量表示變量 var 在內存中的起始地址在內存中的起始地址356.2 指針C+語言程序設計(第4版),鄭莉,清華大學6.2.4 指針的賦值指針變量的初始化指針變量的初始化語法形式語法形式存儲類型存儲類型 數(shù)據(jù)類型數(shù)據(jù)類型*指針名初始地址;指針名初始地址;例:例:int*pa=&a;注意事項注意事項用變
23、量地址作為初值時,該變量必須在指針初始化之前用變量地址作為初值時,該變量必須在指針初始化之前已聲明過,且變量類型應與指針類型一致。已聲明過,且變量類型應與指針類型一致??梢杂靡粋€已賦初值的指針去初始化另一個指針變量??梢杂靡粋€已賦初值的指針去初始化另一個指針變量。不要用一個內部不要用一個內部 auto 變量去初始化變量去初始化 static 指針。指針。366.2 指針C+語言程序設計(第4版),鄭莉,清華大學指針變量的賦值運算指針變量的賦值運算指針名指針名=地址地址“地址地址”中存放的數(shù)據(jù)類型與指針類型必須相符。中存放的數(shù)據(jù)類型與指針類型必須相符。向指針變量賦的值必須是地址常量或變量,不能是
24、普通整數(shù)。向指針變量賦的值必須是地址常量或變量,不能是普通整數(shù)。但可以賦值為整數(shù)但可以賦值為整數(shù)0,表示空指針。,表示空指針。指針的類型是它所指向變量的類型,而不是指針本身數(shù)據(jù)值指針的類型是它所指向變量的類型,而不是指針本身數(shù)據(jù)值的類型,任何一個指針本身的數(shù)據(jù)值都是的類型,任何一個指針本身的數(shù)據(jù)值都是unsigned long int型。型。允許聲明指向允許聲明指向 void 類型的指針。該指針可以被賦予任何類類型的指針。該指針可以被賦予任何類型對象的地址。型對象的地址。例:例:void*general;376.2 指針 6.2.4 指針的賦值C+語言程序設計(第4版),鄭莉,清華大學例例6-
25、5 指針的聲明、賦值與使用指針的聲明、賦值與使用#include using namespace std;int main()int i;/定義定義int型數(shù)型數(shù)iint*ptr=&i;/取取i的地址賦給的地址賦給ptri=10;/int型數(shù)賦初值型數(shù)賦初值cout i=i endl;/輸出輸出int型數(shù)的值型數(shù)的值cout *ptr=*ptr endl;/輸出輸出int型指針所指地址的內容型指針所指地址的內容return 0;386.2 指針 6.2.4 指針的賦值運行結果:運行結果:i=10*ptr=10C+語言程序設計(第4版),鄭莉,清華大學例例6-6 void類型指針的使用類型指針的
26、使用#include using namespace std;int main()/!void voidObject;錯,不能聲明錯,不能聲明void類型的變量類型的變量void*pv;/對,可以聲明對,可以聲明void類型的指針類型的指針int i=5;pv=&i;/void類型指針指向整型變量類型指針指向整型變量int*pint=(int*)(pv);/void類型指針賦值給類型指針賦值給int類型指針類型指針cout *pint=*pint endl;return 0;396.2 指針 6.2.4 指針的賦值C+語言程序設計(第4版),鄭莉,清華大學指向常量的指針指向常量的指針不能通過指
27、針來改變所指對象的值,但指針本身不能通過指針來改變所指對象的值,但指針本身可以改變,可以指向另外的對象??梢愿淖?,可以指向另外的對象。例:例:int a;const int *p1=&a;/p1是指向常量的指針是指向常量的指針int b;p1=&b;/正確,正確,p1本身的值可以改變本身的值可以改變*p1=1;/編譯時出錯,不能通過編譯時出錯,不能通過p1改變所指的對象改變所指的對象406.2 指針 6.2.4 指針的賦值C+語言程序設計(第4版),鄭莉,清華大學指針類型的常量指針類型的常量若聲明指針常量,則指針本身的值不能被改變。若聲明指針常量,則指針本身的值不能被改變。例:例:int a;
28、int *const p2=&a;p2=&b;/錯誤,錯誤,p2是指針常量,值不能改變是指針常量,值不能改變416.2 指針 6.2.4 指針的賦值C+語言程序設計(第4版),鄭莉,清華大學指針變量的算術運算指針變量的算術運算指針與整數(shù)的加減運算指針與整數(shù)的加減運算指針指針p加上或減去加上或減去n,其意義是指針當前指向位置的前方,其意義是指針當前指向位置的前方或后方第或后方第n個數(shù)據(jù)的地址。個數(shù)據(jù)的地址。這種運算的結果值取決于指針指向的數(shù)據(jù)類型。這種運算的結果值取決于指針指向的數(shù)據(jù)類型。p1n1等價于等價于*(p1+n1)指針加一,減一運算指針加一,減一運算指向下一個或前一個數(shù)據(jù)。指向下一個或
29、前一個數(shù)據(jù)。例如:例如:y=*px+相當于相當于 y=*(px+)(*和和+優(yōu)先級相同,自右向左運算優(yōu)先級相同,自右向左運算)426.2 指針 6.2.5 指針運算C+語言程序設計(第4版),鄭莉,清華大學papa-2pa-1pa+1pa+2pa+3*(pa-2)或pa-2*pa或pa0*(pa+1)或pa1*(pa+2)或pa2*(pa+3)或pa3*(pa-1)或pa-1short*pa436.2 指針 6.2.5 指針運算C+語言程序設計(第4版),鄭莉,清華大學pb-1pbpb+1pb+2*(pb-1)或pb-1*pb或pb0*(pb+1)或pb1*(pb+2)或pb2long*pb4
30、46.2 指針 6.2.5 指針運算C+語言程序設計(第4版),鄭莉,清華大學指針變量的關系運算關系運算關系運算指向相同類型數(shù)據(jù)的指針之間可以進行各種關系運算。指向相同類型數(shù)據(jù)的指針之間可以進行各種關系運算。指向不同數(shù)據(jù)類型的指針,以及指針與一般整數(shù)變量之指向不同數(shù)據(jù)類型的指針,以及指針與一般整數(shù)變量之間的關系運算是無意義的。間的關系運算是無意義的。指針可以和零之間進行等于或不等于的關系運算。指針可以和零之間進行等于或不等于的關系運算。例如:例如:p=0或或p!=0賦值運算賦值運算向指針變量賦的值必須是地址常量或變量,不能是普通向指針變量賦的值必須是地址常量或變量,不能是普通整數(shù)。但可以賦值為
31、整數(shù)整數(shù)。但可以賦值為整數(shù)0 0,表示空指針。,表示空指針。456.2 指針 6.2.5 指針運算C+語言程序設計(第4版),鄭莉,清華大學6.2.6 用指針處理數(shù)組元素聲明與賦值聲明與賦值例:例:int a10,*pa;pa=&a0;或或 pa=a;通過指針引用數(shù)組元素通過指針引用數(shù)組元素經過上述聲明及賦值后:經過上述聲明及賦值后:*pa就是就是a0,*(pa+1)就是就是a1,.,*(pa+i)就是就是ai.ai,*(pa+i),*(a+i),pai都是等效的。都是等效的。不能寫不能寫 a+,因為,因為a是數(shù)組首地址是常量。是數(shù)組首地址是常量。466.2 指針C+語言程序設計(第4版),鄭
32、莉,清華大學例例6-7476.2 指針 6.2.6 用指針處理數(shù)組元素設有一個設有一個int型數(shù)組型數(shù)組a,有,有10個元素。用三種方法輸個元素。用三種方法輸出各元素:出各元素:使用數(shù)組名和下標使用數(shù)組名和下標使用數(shù)組名和指針運算使用數(shù)組名和指針運算使用指針變量使用指針變量C+語言程序設計(第4版),鄭莉,清華大學例例6-7(續(xù)續(xù))使用數(shù)組名和下標使用數(shù)組名和下標486.2 指針 6.2.6 用指針處理數(shù)組元素#include using namespace std;int main()int a10=1,2,3,4,5,6,7,8,9,0;for(int i=0;i 10;i+)cout a
33、i ;cout endl;return 0;C+語言程序設計(第4版),鄭莉,清華大學例例6-7(續(xù)續(xù))使用數(shù)組名指針運算使用數(shù)組名指針運算496.2 指針 6.2.6 用指針處理數(shù)組元素#include using namespace std;int main()int a10=1,2,3,4,5,6,7,8,9,0;for(int i=0;i 10;i+)cout *(a+i);cout endl;return 0;C+語言程序設計(第4版),鄭莉,清華大學例例6-7(續(xù)續(xù))使用指針變量使用指針變量506.2 指針 6.2.6 用指針處理數(shù)組元素#include using namespa
34、ce std;int main()int a10=1,2,3,4,5,6,7,8,9,0;for(int*p=a;p (a+10);p+)cout *p ;cout endl;return 0;C+語言程序設計(第4版),鄭莉,清華大學6.2.7 指針數(shù)組指針數(shù)組數(shù)組的元素是指針型數(shù)組的元素是指針型例:例:Point *pa2;由由pa0,pa1兩個指針組成兩個指針組成 516.2 指針C+語言程序設計(第4版),鄭莉,清華大學例6-8 利用指針數(shù)組存放單位矩陣526.2 指針 6.2.7 指針數(shù)組#include using namespace std;int main()int line1
35、=1,0,0;/矩陣的第一行矩陣的第一行int line2=0,1,0;/矩陣的第二行矩陣的第二行int line3=0,0,1;/矩陣的第三行矩陣的第三行/定義整型指針數(shù)組并初始化定義整型指針數(shù)組并初始化int*pLine3=line1,line2,line3;C+語言程序設計(第4版),鄭莉,清華大學例6-8(續(xù))536.2 指針 6.2.7 指針數(shù)組cout Matrix test:endl;/輸出單位矩陣輸出單位矩陣for(int i=0;i 3;i+)for(int j=0;j 3;j+)cout pLineij ;cout endl;return 0;輸出結果為:輸出結果為:Mat
36、rix test:1,0,00,1,00,0,1C+語言程序設計(第4版),鄭莉,清華大學例例6-9 二維數(shù)組舉例二維數(shù)組舉例546.2 指針 6.2.7 指針數(shù)組#include using namespace std;int main()int array233=11,12,13,21,22,23,31,32,33 ;for(int i=0;i 3;i+)for(int j=0;j 3;j+)cout *(*(array2+i)+j);/逐個輸出二維數(shù)組第逐個輸出二維數(shù)組第i行元素值行元素值 cout endl;return 0;C+語言程序設計(第4版),鄭莉,清華大學55例例6-9(續(xù)
37、續(xù))運行結果:運行結果:11 12 1321 22 2331 32 336.2 指針 6.2.7 指針數(shù)組C+語言程序設計(第4版),鄭莉,清華大學56指針數(shù)組指針數(shù)組 vs 二維數(shù)組二維數(shù)組6.2 指針 6.2.7 指針數(shù)組pLine0 pLine1 pLine2(a)指針數(shù)組指針數(shù)組array20array21array22array2二維數(shù)組二維數(shù)組pLineC+語言程序設計(第4版),鄭莉,清華大學6.2.8 用指針作為函數(shù)參數(shù)用指針作為函數(shù)參數(shù)以地址方式傳遞數(shù)據(jù),可以用來返回函數(shù)處理結以地址方式傳遞數(shù)據(jù),可以用來返回函數(shù)處理結果。果。實參是數(shù)組名時形參可以是指針。實參是數(shù)組名時形參可
38、以是指針。576.2 指針C+語言程序設計(第4版),鄭莉,清華大學例6-10586.2 指針 6.2.8 用指針作為函數(shù)參數(shù)題目:讀入三個浮點數(shù),將整數(shù)部分和小數(shù)部分分別輸出題目:讀入三個浮點數(shù),將整數(shù)部分和小數(shù)部分分別輸出#include using namespace std;void splitFloat(float x,int*intPart,float*fracPart)/取取x的整數(shù)部分的整數(shù)部分 *intPart=(int)(x);/取取x的小數(shù)部分的小數(shù)部分 *fracPart=x-*intPart;C+語言程序設計(第4版),鄭莉,清華大學例6-10(續(xù))596.2 指針
39、6.2.8 用指針作為函數(shù)參數(shù)int main()cout Enter 3 float point numbers:endl;for(int i=0;i x;splitFloat(x,&n,&f);/變變量地址作量地址作為實為實參參 cout Integer Part=n Fraction Part=f endl;return 0;C+語言程序設計(第4版),鄭莉,清華大學60例例6-10(續(xù)續(xù))運行結果:運行結果:Enter 3 floating point numbers 4.7Integer Part=4 Fraction Part=0.78.913Integer Part=8 Frac
40、tion Part=0.913-4.7518Integer Part=-4 Fraction Part=-0.75186.2 指針 6.2.8 用指針作為函數(shù)參數(shù)C+語言程序設計(第4版),鄭莉,清華大學例例:輸出數(shù)組元素的內容和地址輸出數(shù)組元素的內容和地址616.2 指針 6.2.8 用指針作為函數(shù)參數(shù)#include#include using namespace std;void arrayPtr(long*p,int n)coutIn func,address of array is pendl;cout Accessing array using pointers endl;for(
41、int i=0;i n;i+)cout Address for index iis p+i;cout Value is *(p+i)endl;C+語言程序設計(第4版),鄭莉,清華大學例例(續(xù)續(xù))626.2 指針 6.2.8 用指針作為函數(shù)參數(shù)int main()long list5=50,60,70,80,90;coutIn main,address of array islistendl;cout endl;arrayPtr(list,5);return 0;C+語言程序設計(第4版),鄭莉,清華大學63例例(續(xù)續(xù))運行結果:運行結果:In main,address of array is
42、 0012FF50In func,address of array is 0012FF50Accessing array using pointersAddress for index 0 is 0012FF50 Value is 50Address for index 1 is 0012FF54 Value is 60Address for index 2 is 0012FF58 Value is 70Address for index 3 is 0012FF5C Value is 80Address for index 4 is 0012FF60 Value is 906.2 指針 6.2
43、.8 用指針作為函數(shù)參數(shù)C+語言程序設計(第4版),鄭莉,清華大學例例:指向常量的指針做形參指向常量的指針做形參646.2 指針 6.2.8 用指針作為函數(shù)參數(shù)#includeusing namespace std;const int N=6;void print(const int*p,int n);int main()int arrayN;for(int i=0;i arrayi;print(array,N);return 0;void print(const int*p,int n)cout *p;for(int i=1;i n;i+)cout ,*(p+i);cout endl;C+語
44、言程序設計(第4版),鄭莉,清華大學6.2.9 指針型函數(shù)指針型函數(shù)當函數(shù)的返回值是地址時,該函數(shù)就是指針形函當函數(shù)的返回值是地址時,該函數(shù)就是指針形函數(shù)。數(shù)。聲明形式聲明形式 存儲類型存儲類型 數(shù)據(jù)類型數(shù)據(jù)類型 *函數(shù)名函數(shù)名()()656.2 指針C+語言程序設計(第4版),鄭莉,清華大學6.2.10 指向函數(shù)的指針指向函數(shù)的指針聲明形式聲明形式 存儲類型存儲類型 數(shù)據(jù)類型數(shù)據(jù)類型 (*(*函數(shù)指針名函數(shù)指針名)();)();含義:含義:數(shù)據(jù)指針指向數(shù)據(jù)存儲區(qū),而函數(shù)指針指向的是程序代數(shù)據(jù)指針指向數(shù)據(jù)存儲區(qū),而函數(shù)指針指向的是程序代碼存儲區(qū)。碼存儲區(qū)。666.2 指針C+語言程序設計(第4
45、版),鄭莉,清華大學例6-11 函數(shù)指針676.2 指針 6.2.10 指向函數(shù)的指針#include using namespace std;void printStuff(float)cout This is the print stuff function.endl;void printMessage(float data)cout The data to be listed is data endl;void printFloat(float data)cout The data to be printed is data-成員名成員名ptr-getx()相當于相當于 (*ptr).g
46、etx();706.2 指針C+語言程序設計(第4版),鄭莉,清華大學例例6-12使用指針來訪問使用指針來訪問Point類的成員類的成員/6_12.cpp#include using namespace std;class Point/類的定義類的定義public:/外部接口外部接口Point(int x=0,int y=0):x(x),y(y)/構造函數(shù)構造函數(shù)int getX()const return x;/返回返回xint getY()const return y;/返回返回yprivate:/私有數(shù)據(jù)私有數(shù)據(jù)int x,y;716.2 指針 6.2.11 對象指針的一般概念C+語言程
47、序設計(第4版),鄭莉,清華大學例例6-12(續(xù))(續(xù))72int main()/主函數(shù)主函數(shù)Point a(4,5);/定義并初始化對象定義并初始化對象aPoint*p1=&a;/定義對象指針,用定義對象指針,用a的地址將其初始化的地址將其初始化cout getX()endl;/利用指針訪問對象成員利用指針訪問對象成員cout a.getX()x;766.2 指針 6.2.11 對象指針C+語言程序設計(第4版),鄭莉,清華大學指向類的非靜態(tài)成員的指針指向類的非靜態(tài)成員的指針通過指向成員的指針只能訪問公有成員通過指向成員的指針只能訪問公有成員聲明指向成員的指針聲明指向成員的指針聲明指向公有數(shù)
48、據(jù)成員的指針聲明指向公有數(shù)據(jù)成員的指針類型說明符類型說明符 類名類名:*:*指針名;指針名;聲明指向公有函數(shù)成員的指針聲明指向公有函數(shù)成員的指針類型說明符類型說明符 (類名類名:*:*指針名指針名)()(參數(shù)表參數(shù)表);776.2 指針 6.2.11 對象指針C+語言程序設計(第4版),鄭莉,清華大學指向類的非靜態(tài)成員的指針指向類的非靜態(tài)成員的指針(續(xù)續(xù))指向數(shù)據(jù)成員的指針指向數(shù)據(jù)成員的指針說明指針應該指向哪個成員說明指針應該指向哪個成員指針名指針名 =&=&類名類名:數(shù)據(jù)成員名;數(shù)據(jù)成員名;通過對象名(或對象指針)與成員指針結合來訪問通過對象名(或對象指針)與成員指針結合來訪問數(shù)據(jù)成員數(shù)據(jù)成
49、員對象名對象名.*.*類成員指針名類成員指針名或:或:對象指針名對象指針名-*-*類成員指針名類成員指針名786.2 指針 6.2.11 對象指針C+語言程序設計(第4版),鄭莉,清華大學指向類的非靜態(tài)成員的指針指向類的非靜態(tài)成員的指針(續(xù)續(xù))指向函數(shù)成員的指針指向函數(shù)成員的指針初始化初始化指針名指針名=&=&類名類名:函數(shù)成員名;函數(shù)成員名;通過對象名(或對象指針)與成員指針結合來訪問通過對象名(或對象指針)與成員指針結合來訪問函數(shù)成員函數(shù)成員(對象名對象名.*.*類成員指針名類成員指針名)()(參數(shù)表參數(shù)表)或:或:(對象指針名對象指針名-*-*類成員指針名類成員指針名)()(參數(shù)表參數(shù)表
50、)796.2 指針 6.2.11 對象指針C+語言程序設計(第4版),鄭莉,清華大學例例6-13 訪問對象的公有成員函數(shù)的不同方式訪問對象的公有成員函數(shù)的不同方式80int main()/主函數(shù)主函數(shù) Point a(4,5);/聲明對象聲明對象APoint*p1=&a;/聲明對象指針并初始化聲明對象指針并初始化 /聲明成員函數(shù)指針并初始化聲明成員函數(shù)指針并初始化int(Point:*funcPtr)()=Point:getX;/(1)使用成員函數(shù)指針訪問成員函數(shù)使用成員函數(shù)指針訪問成員函數(shù)cout (a.*funcPtr)()endl;/(2)使用成員函數(shù)指針和對象指針訪問成員函數(shù)使用成員函
51、數(shù)指針和對象指針訪問成員函數(shù)cout*funcPtr)()endl;/(3)使用對象名訪問成員函數(shù)使用對象名訪問成員函數(shù)cout a.getX()endl;/(4)使用對象指針訪問成員函數(shù)使用對象指針訪問成員函數(shù)cout getX()endl;return 0;6.2 指針 6.2.11 對象指針C+語言程序設計(第4版),鄭莉,清華大學指向類的靜態(tài)成員的指針指向類的靜態(tài)成員的指針對類的靜態(tài)成員的訪問不依賴于對象對類的靜態(tài)成員的訪問不依賴于對象可以用普通的指針來指向和訪問靜態(tài)成員可以用普通的指針來指向和訪問靜態(tài)成員例例6-14通過指針訪問類的靜態(tài)數(shù)據(jù)成員通過指針訪問類的靜態(tài)數(shù)據(jù)成員例例6-15
52、通過指針訪問類的靜態(tài)函數(shù)成員通過指針訪問類的靜態(tài)函數(shù)成員816.2 指針 6.2.11 對象指針C+語言程序設計(第4版),鄭莉,清華大學例例6-14 通過指針訪問類的靜態(tài)數(shù)據(jù)成員通過指針訪問類的靜態(tài)數(shù)據(jù)成員82#include using namespace std;class Point /Point類定義類定義public:/外部接口外部接口Point(int x=0,int y=0):x(x),y(y)count+;Point(const Point&p):x(p.x),y(p.y)count+;Point()count-;int getX()const return x;int ge
53、tY()const return y;static int count;private:/私有數(shù)據(jù)成員私有數(shù)據(jù)成員int x,y;int Point:count=0;6.2 指針 6.2.11 對象指針C+語言程序設計(第4版),鄭莉,清華大學例例6-14(續(xù)續(xù))83int main()/主函數(shù)實現(xiàn)主函數(shù)實現(xiàn) /定義一個定義一個int型指針,指向類的靜態(tài)成員型指針,指向類的靜態(tài)成員int*ptr=&Point:count;Point a(4,5);/定義對象定義對象acout Point A:a.getX(),a.getY();cout Object count=*ptr endl;Point
54、 b(a);/定義對象定義對象bcout Point B:b.getX(),b.getY();cout Object count=*ptr endl;return 0;6.2 指針 6.2.11 對象指針C+語言程序設計(第4版),鄭莉,清華大學例例6-15 通過指針訪問類的靜態(tài)函數(shù)成員通過指針訪問類的靜態(tài)函數(shù)成員84#include using namespace std;class Point/Point類定義類定義public:/外部接口外部接口Point(int x=0,int y=0):x(x),y(y)count+;Point(const Point&p):x(p.x),y(p.y
55、)count+;Point()count-;int getX()const return x;int getY()const return y;static void showCount()cout Object count=count endl;private:/私有數(shù)據(jù)成員私有數(shù)據(jù)成員int x,y;static int count;int Point:count=0;6.2 指針 6.2.11 對象指針C+語言程序設計(第4版),鄭莉,清華大學例例6-15(續(xù)續(xù))85int main()/主函數(shù)實現(xiàn)主函數(shù)實現(xiàn) /定義一個指向函數(shù)的指針,指向類的靜態(tài)成員函數(shù)定義一個指向函數(shù)的指針,指向類的
56、靜態(tài)成員函數(shù)void(*funcPtr)()=Point:showCount;Point a(4,5);/定義對象定義對象Acout Point A:a.getX(),a.getY();funcPtr();/輸出對象個數(shù),直接通過指針訪問靜態(tài)函數(shù)成員輸出對象個數(shù),直接通過指針訪問靜態(tài)函數(shù)成員Point b(a);/定義對象定義對象Bcout Point B:b.getX(),b.getY();funcPtr();/輸出對象個數(shù),直接通過指針訪問靜態(tài)函數(shù)成員輸出對象個數(shù),直接通過指針訪問靜態(tài)函數(shù)成員return 0;6.2 指針 6.2.11 對象指針C+語言程序設計(第4版),鄭莉,清華大學8
57、66.3 動態(tài)內存分配動態(tài)申請內存操作符動態(tài)申請內存操作符 newnew 類型名類型名T(初始化參數(shù)列表)(初始化參數(shù)列表)功能:功能:在程序執(zhí)行期間,申請用于存放在程序執(zhí)行期間,申請用于存放T類型對類型對象的內存空間,并依初值列表賦以初值。象的內存空間,并依初值列表賦以初值。結果值:結果值:成功:成功:T類型的指針,指向新分配的內類型的指針,指向新分配的內存;失敗:拋出異常。存;失?。簰伋霎惓?。C+語言程序設計(第4版),鄭莉,清華大學876.3 動態(tài)內存分配釋放內存操作符釋放內存操作符deletedelete 指針指針p功能:功能:釋放指針釋放指針p所指向的內存。所指向的內存。p必須是必須
58、是new操操作的返回值。作的返回值。C+語言程序設計(第4版),鄭莉,清華大學例例6-16 動態(tài)創(chuàng)建對象舉例動態(tài)創(chuàng)建對象舉例88#include using namespace std;class Point public:Point():x(0),y(0)coutDefault Constructor called.endl;Point(int x,int y):x(x),y(y)cout Constructor called.endl;Point()coutDestructor called.endl;int getX()const return x;int getY()const ret
59、urn y;void move(int newX,int newY)x=newX;y=newY;private:int x,y;6.3 動態(tài)內存分配C+語言程序設計(第4版),鄭莉,清華大學例例6-16(續(xù)續(xù))89int main()cout Step one:endl;Point*ptr1=new Point;/調用缺省構造函數(shù)調用缺省構造函數(shù)delete ptr1;/刪除對象,自動調用析構函數(shù)刪除對象,自動調用析構函數(shù) cout Step two:endl;ptr1=new Point(1,2);delete ptr1;return 0;6.3 動態(tài)內存分配運行結果:運行結果:Step O
60、ne:Default Constructor called.Destructor called.Step Two:Constructor called.Destructor called.C+語言程序設計(第4版),鄭莉,清華大學906.3 動態(tài)內存分配申請和釋放動態(tài)數(shù)組申請和釋放動態(tài)數(shù)組分配:分配:new 類型名類型名T 數(shù)組長度數(shù)組長度 數(shù)組長度可以是任何表達式,在運行時計算數(shù)組長度可以是任何表達式,在運行時計算釋放:釋放:delete 數(shù)組名數(shù)組名p釋放指針釋放指針p所指向的數(shù)組。所指向的數(shù)組。p必須是用必須是用new分配得到分配得到的數(shù)組首地址。的數(shù)組首地址。C+語言程序設計(第4版)
61、,鄭莉,清華大學例例6-17 動態(tài)創(chuàng)建對象數(shù)組舉例動態(tài)創(chuàng)建對象數(shù)組舉例91#includeusing namespace std;class Point /類的聲明同例類的聲明同例6-16,略,略;int main()Point*ptr=new Point2;/創(chuàng)建對象數(shù)組創(chuàng)建對象數(shù)組ptr0.move(5,10);/通過指針訪問數(shù)組元素的成員通過指針訪問數(shù)組元素的成員ptr1.move(15,20);/通過指針訪問數(shù)組元素的成員通過指針訪問數(shù)組元素的成員cout Deleting.endl;delete ptr;/刪除整個對象數(shù)組刪除整個對象數(shù)組return 0;6.3 動態(tài)內存分配C+語言
62、程序設計(第4版),鄭莉,清華大學92例例6-17(續(xù)續(xù))運行結果:運行結果:Default Constructor called.Default Constructor called.Deleting.Destructor called.Destructor called.6.3 動態(tài)內存分配C+語言程序設計(第4版),鄭莉,清華大學936.3 動態(tài)內存分配動態(tài)創(chuàng)建多維數(shù)組動態(tài)創(chuàng)建多維數(shù)組 new 類型名類型名T第第1維長度維長度第第2維長度維長度;如果內存申請成功,如果內存申請成功,new運算返回一個指向新分配運算返回一個指向新分配內存首地址的指針,是一個內存首地址的指針,是一個T類型的數(shù)
63、組,數(shù)組元類型的數(shù)組,數(shù)組元素的個數(shù)為除最左邊一維外各維下標表達式的乘積。素的個數(shù)為除最左邊一維外各維下標表達式的乘積。例如:例如:char (*fp)3;fp=new char23;C+語言程序設計(第4版),鄭莉,清華大學946.3 動態(tài)內存分配char(*fp)3;fpfp+1fp00fp01fp02fp10fp11fp12C+語言程序設計(第4版),鄭莉,清華大學例6-19 動態(tài)創(chuàng)建二維數(shù)組95#include#include using namespace std;using namespace std;intint main()main()float(*cp)9float(*cp)
64、9intint i,j,ki,j,k;cp=new float89;cp=new float89;for(i=0;i8;i+)for(i=0;i8;i+)for(j=0;j9;j+)for(j=0;j9;j+)*(*(*(*(cp+i)+jcp+i)+j)=i*100+j*10;)=i*100+j*10;/通過指針訪問數(shù)組元素通過指針訪問數(shù)組元素6.3 動態(tài)內存分配C+語言程序設計(第4版),鄭莉,清華大學例6-19(續(xù))96 for(i=0;i8;i+)for(i=0;i8;i+)for(j=0;j9;j+)for(j=0;j9;j+)/將指針將指針cpcp作為數(shù)組名使用,作為數(shù)組名使用,/
65、通過數(shù)組名和下標訪問數(shù)組元素通過數(shù)組名和下標訪問數(shù)組元素 coutcoutcpijcpij ;coutcoutendlendl;coutcoutendlendl;6.3 動態(tài)內存分配C+語言程序設計(第4版),鄭莉,清華大學97用用vector創(chuàng)建數(shù)組對象創(chuàng)建數(shù)組對象為什么需要為什么需要vector?將動態(tài)數(shù)組封裝,自動創(chuàng)建和刪除將動態(tài)數(shù)組封裝,自動創(chuàng)建和刪除數(shù)組下標越界檢查數(shù)組下標越界檢查vector動態(tài)數(shù)組對象的定義動態(tài)數(shù)組對象的定義vector 數(shù)組對象名數(shù)組對象名(數(shù)組長度數(shù)組長度);例:例:vector arr(5)建立大小為建立大小為5的的int數(shù)組數(shù)組6.4 用vector創(chuàng)建數(shù)
66、組對象C+語言程序設計(第4版),鄭莉,清華大學986.4 用vector創(chuàng)建數(shù)組對象vector數(shù)組對象的使用數(shù)組對象的使用對數(shù)組元素的引用對數(shù)組元素的引用與普通數(shù)組具有相同形式:與普通數(shù)組具有相同形式:數(shù)組對象名數(shù)組對象名 下標表達式下標表達式 但但vector數(shù)組對象名不表示數(shù)組首地址數(shù)組對象名不表示數(shù)組首地址獲得數(shù)組長度獲得數(shù)組長度用用size函數(shù)函數(shù)數(shù)組對象名數(shù)組對象名.size()C+語言程序設計(第4版),鄭莉,清華大學例例6-20 vector應用舉例應用舉例99#include#include using namespace std;/計算數(shù)組計算數(shù)組arr中元素的平均值中元素的平均值double average(const vector&arr)double sum=0;for(unsigned i=0;i arr.size();i+)sum+=arri;return sum/arr.size();6.4 用vector創(chuàng)建數(shù)組對象C+語言程序設計(第4版),鄭莉,清華大學例6-20(續(xù))100int main()unsigned n;cout n;vector a
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物業(yè)管理制度:常見突發(fā)緊急事件應急處置程序和方法
- 某物業(yè)公司冬季除雪工作應急預案范文
- 物業(yè)管理制度:小區(qū)日常巡查工作規(guī)程
- 物業(yè)管理制度:設備設施故障應急預案
- 某物業(yè)公司小區(qū)地下停車場管理制度
- 某物業(yè)公司巡查、檢查工作內容、方法和要求
- 物業(yè)管理制度:安全防范十大應急處理預案
- 物業(yè)公司巡查、檢查工作內容、方法和要求
- 某物業(yè)公司保潔部門領班總結
- 某公司安全生產舉報獎勵制度
- 物業(yè)管理:火情火災應急預案
- 某物業(yè)安保崗位職責
- 物業(yè)管理制度:節(jié)前工作重點總結
- 物業(yè)管理:某小區(qū)消防演習方案
- 某物業(yè)公司客服部工作職責