freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c課件第八章指針和引用-文庫吧資料

2024-10-23 00:57本頁面
  

【正文】 rn p。 //返回指針 } 例 設(shè)計(jì) 字符拷貝和拼接的函數(shù) (教材 P165) char *copy(char *to,char *from) //字符拷貝指針函數(shù) { char *p=to。 //從字符串的兩邊向中間進(jìn)行交換 *p1++=temp。 //p2回退兩個(gè)位置,指向字符串的最后一個(gè)字符 while(p1p2){ //指針的比較和內(nèi)容的交換 temp=*p2。 //初始化指針變量, p p2指向字符串的起始 while(*p2++) 。 } 例 將輸入的一個(gè)字符串按逆序輸出 (教材 P164) char *flip(char *ptr) //指針函數(shù) { char *p1,*p2,temp。要返回函數(shù)中局部變量的地址,應(yīng)聲明為靜態(tài)的。 } 注意 :返回指針的函數(shù),其函數(shù)體中的 return語 句的參數(shù)必須為全局變量的指針、靜態(tài)變量指針 或形參的指針 (如果形參為指針類型或引用類型 的話 ),不能為局部變量指針。 } s1[i]=?\0?。 while(*(s2+i)!=?\0?) {*(s1+i)=*(s2+i)。 } s1[i]=?\0?。 while(s2[i]!=?\0?) { s1[i]=s2[i]。 menu(p,4)。 } cout“\n Enter a choice:”。im。 system(“cls” )。......} 例 :制作一個(gè)簡單的菜單。j++) cout*(*(p+i)+j)。 for(j=0。break。j4。i++) { flag=0。 for(i=0。 ....... search(score[0],3,4)。j++) printf(“% ”,*(p+i*n+j))。 for(j=0。break。jn。i++) { flag=0。 for(i=0。 例:有一個(gè)班, 3個(gè)學(xué)生各 4門成績,要求查找有成績不及格的學(xué)生,并輸出該學(xué)生的全部成績。 cout“max=“max“min=”min。i++) cinnumber+i。 for(i=0。 else if(*pmin) min=*p。in。 max=min=*p。 } int max,min。 p1=p2。 } void swap(int *p1,int *p2) { int *temp。 swap(pt1,pt2)。x2。 void swap(int * ,int * ); void main( ) { int x1=100,x2=200,*pt1=amp。將指針變量的值傳遞給形參 (當(dāng)然形參也應(yīng)該是指針變量 ),由于指針變量的值就是地址,所以這種傳值方式就成為了傳址方式。swap函數(shù)執(zhí)行過程中p1,p2的值沒有變化,退出 swap函數(shù)后 ,x1,x2的值交換。 *p1=*p2。x1 amp。 *p2=temp。 temp=*p1。 cout“交換后 x1=“x1“,x2=”x2。x1,amp。 cout“交換前x1=“x1“,x2=”x2endl。 b=temp。} 100 200 x1 x2 x1=100,x2=200 進(jìn)入 swap函數(shù) x1,x2分別將值賦給 a,b temp a b 100 200 100 200100temp=a。a=b。 } void swap(int a,int b) { int temp。 swap(x1,x2)。 void swap(int ,int ); void main( ) { int x1=100,x2=200。str[i]=p1。 //k記為當(dāng)前最小字符串的位置 if(k!=i) {p1=str[k]。j5。i++) { k=i。 //按升序排序 (改進(jìn)后的選擇排序 ) for(i=0。 //定義數(shù)組并初始化 char *p1。(為什么?) 二維數(shù)組表示如下: char s[4][8]={“open”,”new”,”save”,”save as”}。顧名思義,指針數(shù)組只存放指針,因此該指針數(shù)組存儲的實(shí)際上是各字符串的首地址。 (注意區(qū)分 char (*s)[4] 與指針數(shù)組對照,我們稱它為 數(shù)組指針 ) 我們可以初始化這個(gè)字符指針數(shù)組,如: char *s[4]={“open”,”new”,”save”,”save as”}。 //s2拷貝給 s5 } 指針數(shù)組 我們先看一個(gè)指針定義 char *s[4]; 由于 [] 比 * 的優(yōu)先級高 (請參考 P18),因此以上定義首先定義了一個(gè)數(shù)組長度為 4的一維數(shù)組,而數(shù)組元素為字符指針。i++) s4[i]=s1[i]。 //s1拷貝給 s3 for(i=0。 *p1++=*p2++ 。 char *p1=s3,*p2=s1。 //定義指針并初始化 char s3[30],s4[30],s5[30]。 例 用指針實(shí)現(xiàn)字符串的拷貝 (教材 P150) void main(void) { char s1[]=I am a student!。 用指針表示的字符串輸出同樣可使用 cout指針變量名 。 我們知道,字符串是不能直接賦值給字符數(shù)組的,要使用函數(shù) strcpy,但字符串可直接賦值給字符指針。 指針與字符串的關(guān)系 字符串在內(nèi)存以字符數(shù)組存放,自然與指針相關(guān)聯(lián)。 可以認(rèn)為:在列指針前加 amp。a[0]。 //見教材 P155 p=a。 cout*(p+4*i+j)。 或 p=a[0]。 p=amp。 怎樣定義列指針?輸出 a[i][j]? 很簡單,只要注意把 a的列指針表示方法賦給新的指針即可。 下面我們討論行指針、列指針的定義方法。a[i][j]=a[i]+j=*(a+i)+j 相對應(yīng)的元素是:a[i][j]=*(a[i]+j)=*(*(a+i)+j) 這就是二維數(shù)組元素的指針表示法。 而 a[0]用指針 a可表示為 *(a+0)即 *a, a[1]表示為*(a+1)。很顯然 a[0]就指向 a[0][0],因此a[0]+1才指向 a[0][1],我們稱 a[0]為 列指針 ,同理 a[1]、a[2]也是列指針。 那么如何讓指針真正指到每行上的列元素呢?即我們真正關(guān)心的二維數(shù)組的每一個(gè)元素。我們稱 a為 行指針 ,同理 a+ a+2也是行指針。即 a[3][4]可看成數(shù)組長度為 3的一維數(shù)組,而此一維數(shù)組的每個(gè)元素又是一個(gè)數(shù)組長度為 4的一維數(shù)組。a[0][0]。 以上是一維數(shù)組元素的指針表示法,那么二維數(shù)組元素用指針如何表示呢?是否和一維數(shù)組一樣? 如 :int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}。i5。i++) cout*(ptr+i)。 位移法 : 一: for(i=0。i5。i++) coutarray[ i ]。 下標(biāo)法 : 一: for(i=0。 ptr=array。所以引用指針的概念,要表示數(shù)組元素除了可以用下標(biāo)表示外,還可以用指針位移表示。該指針的值是不能修改的 ,即類似 array++的表達(dá)式是錯(cuò)誤的。\n39。\t? per2id39。\t39。 per2salary=。 per2age=18。per1。 }。 unsigned long id。 struct person { char name[10]。 00000011 00000000 高字節(jié) 低字節(jié) 00000000 00000011 高字節(jié) 低字節(jié) 輸出結(jié)果: 768 結(jié)構(gòu)體類型的指針 也可以創(chuàng)建結(jié)構(gòu)體類型的指針變量 ,其一般格式與創(chuàng)建基本類型的指針變量類似: 《 存儲類型 》 結(jié)構(gòu)名 *指針變量 。 cout*(int *)p1。 *p1=*(p1+1)。i。 char *p1,temp。 cout*(float *)ptr_a。 ptr_a=(int *)amp。 求:如何讓整型指針ptr_a指向浮點(diǎn)型變
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1