



版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第五章
指針進(jìn)階第1節(jié)指針數(shù)組及多級(jí)指針1程序解析2指針數(shù)組的概念3指向指針的指針4用指針數(shù)組處理多個(gè)字符串1程序解析【例1】已知奧運(yùn)五環(huán)的5種顏色的英文單詞按一定順序排列,輸入任意一個(gè)顏色的英文單詞,從已有顏色中查找并輸出該顏色的位置值,若沒(méi)有找到,則輸出“NotFound”。1程序解析#include<stdio.h>#include<string.h>intmain(void){inti;char*color[5]={“red”,”blue”,”yellow”,”green”,”black”};charstr[20];printf(“Inputacolor:”);scanf(“%s”,str);for(i=0;i<5;i++)if(strcmp(str,color[i])==0)/*比較顏色是否相同*/break;if(i<5)printf(“position:%d\n”,i+1);elseprintf(“NotFound\n”);return0;}運(yùn)行結(jié)果1Inputacolor:yellowposition:3運(yùn)行結(jié)果2Inputacolor:purpleNotFound
指針數(shù)組2指針數(shù)組的概念C語(yǔ)言中的數(shù)組可以是任何類型,如果數(shù)組的各個(gè)元素都是指針類型,用于存放內(nèi)存地址,那么這個(gè)數(shù)組就是指針數(shù)組。一維指針數(shù)組定義的一般格式為:類型名*數(shù)組名[數(shù)組長(zhǎng)度]2指針數(shù)組的概念inta[10];a是一個(gè)數(shù)組,它有10個(gè)元素每個(gè)元素的類型都是整型char*color[5];color是一個(gè)數(shù)組,它有5個(gè)元素每個(gè)元素的類型都是字符指針2指針數(shù)組的概念char*color[5]={"red","blue","yellow","green","black"
};color是一個(gè)數(shù)組,它有5個(gè)元素每個(gè)元素的類型都是字符指針數(shù)組元素可以處理字符串對(duì)指針數(shù)組元素的操作:printf("%s%x\n",color[i],color[i]);對(duì)指針數(shù)組元素的操作和對(duì)同類型指針變量的操作相同
繼續(xù)執(zhí)行:char*tmp;tmp=color[0];color[0]=color[4];color[4]=tmp;
2指針數(shù)組的概念
color[0]與color[4]交換后的情況
指針數(shù)組操作時(shí):可以直接對(duì)數(shù)組元素進(jìn)行賦值(地址值)和引用tmp=color[0];也可以間接訪問(wèn)和操作數(shù)組元素所指向的單元內(nèi)容
strcpy(color[0],“purple");3指向指針的指針C語(yǔ)言中,指向指針的指針(二級(jí)指針)一般定義為:
類型名**變量名
inta=10;
int*p=&a;int**pp=&p;&apa10&ppp*p*pp**pp&apaa10&pappa**ppa*pa&bpbb20&pbppb**ppb*pbpaappa&a10&pb**ppb*pa&bpbb20&pappb**ppa*pbpaappa&b10&pb**ppa*pb&apbb20&pappb**ppb*papaappa&b20&pb**ppa*pb&apbb10&pappb**ppb*painta=10,b=20,t;int*pa=&a,*pb=&b,*pt;int**ppa=&pa,**ppb=&pb,**ppt;【例2】操作(1):ppt=ppb;ppb=ppa;ppa=ppt;操作(2):pt=pb;pb=pa;pa=pt;操作(3):t=b;b=a;a=t;二維數(shù)組的指針形式a[3][4]:看成是由a[0]、a[1]、a[2]組成的一維數(shù)組,而a[0]、a[1]、a[2]各自又是一個(gè)一維數(shù)組。也即二維數(shù)組是數(shù)組元素為一維數(shù)組的一維數(shù)組。a:第0行地址(行地址)a+i:第i行的地址*(a+i)/a[i]:第i行首元素的地址*(a+i)+j/a[i]+j:第i行第j個(gè)元素的地址*(*a+i)/a[i][0]:第i行首元素的值*((*a+i)+j)/a[i][j]:第i行首元素的值3指向指針的指針【例3】改寫例1,用指向指針的指針實(shí)現(xiàn)。
#include<stdio.h>#include<string.h>intmain(void){inti;char*color[5]={“red”,”blue”,”yellow”,”green”,”black”};/char**pc;/*定義二級(jí)指針變量*/charstr[20];
pc=color;/*二級(jí)指針賦值*/printf(“Inputacolor:”);scanf(“%s”,str);for(i=0;i<5;i++)if(strcmp(str,*(pc+i))==0)/*比較顏色是否相同*/break;if(i<5)printf(“position:%d\n”,i+1);elseprintf(“NotFound\n”);return0;}3指向指針的指針指向指針的指針使用指向指針的指針操作數(shù)據(jù)3指向指針的指針【例3】改寫例1,用指向指針的指針實(shí)現(xiàn)。
pccolor&color[0]*pccolor[0]*(pc+i)color[i]**pc*(*pc)*color[0]:‘r’1.指針數(shù)組與二維數(shù)組二維字符數(shù)組charccolor[][7]={"red","blue","yellow","green",“black"};4用指針數(shù)組處理多個(gè)字符串使用指針數(shù)組更節(jié)省內(nèi)存空間指針數(shù)組char*pcolor[]={"red","blue","yellow","green",“black"};4用指針數(shù)組處理多個(gè)字符串2.用指針數(shù)組操作多個(gè)字符串【例4】將5個(gè)字符串從小到大排序后輸出。voidmain(){inti;inta[5]={6,5,2,8,1};
voidfsort(inta[],intn);
fsort(a,5);
for(i=0;i<5;i++)printf("%d",a[i]);}#include<string.h>voidmain(){inti;char
*pcolor[]={“red”,”blue”,”yellow”,”green”,”black”};
voidfsort(char*color[],intn);
fsort(pcolor,5);
for(i=0;i<5;i++)printf("%s",pcolor[i]);}4用指針數(shù)組處理多個(gè)字符串voidfsort(inta[],intn){intk,j;inttemp;for(k=1;k<n;k++)for(j=0;j<n-k;j++)if(a[j]>a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}}voidfsort(char*color[],intn){intk,j;char*temp;for(k=1;k<n;k++)for(j=0;j<n-k;j++)
if(strcmp(color[j],color[j+1])>0){temp=color[j];color[j]=color[j+1];color[j+1]=temp;}}排序前排序后4用指針數(shù)組處理多個(gè)字符串例5解密藏頭詩(shī)。所謂藏頭詩(shī),就是將一首詩(shī)每一句的第一個(gè)字連起來(lái),所組成的內(nèi)容就是該詩(shī)的真正含義。編寫程序,輸出一首藏頭詩(shī)的真實(shí)含義。
一葉輕舟向東流,
帆梢輕握楊柳手,
風(fēng)纖碧波微起舞,
順?biāo)螐难趴陀啤?用指針數(shù)組處理多個(gè)字符串#include<stdio.h>char*change(chars[][20]);intmain(void){inti;char*poem[4]={"一葉輕舟向東流,","帆梢輕握楊柳手,","風(fēng)纖碧波微起舞,","順?biāo)螐难趴陀啤?};/*指針數(shù)組初始化*/charmean[10];for(i=0;i<4;i++){/*每行取第1個(gè)漢字存入mean*/
mean[2*i]=*(poem[i]);mean[2*i+1]=*(poem[i]+1);}
mean[2*i]=’\0’;
printf("%s\n",mean);/*輸出結(jié)果*/return0;}4用指針數(shù)組處理多個(gè)字符串4用指針數(shù)組處理多個(gè)字符串3.動(dòng)態(tài)輸入多個(gè)字符串例6輸入一些有關(guān)顏色的單詞,每行一個(gè),以#作為輸入結(jié)束標(biāo)志,再按輸入的相反次序輸出這些單詞。其中單詞數(shù)小于20,每個(gè)單詞不超過(guò)15個(gè)字母(用動(dòng)態(tài)分配內(nèi)存的方法處理多個(gè)字符串的輸入)。#include<stdio.h>#include<stdlib.h>#include<string.h>intmain(void){inti,n=0;char*color[20],str[15];scanf("%s",str);while(str[0]!='#'){
color[n]=(char*)malloc(sizeof(char)*(strlen(str)+1));/*動(dòng)態(tài)分配*/
strcpy(color[n],
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- DB31/T 628-2017在用工業(yè)熱交換器能效測(cè)試及綜合評(píng)價(jià)方法
- DB31/T 585-2012小菜蛾測(cè)報(bào)技術(shù)規(guī)范
- DB31/T 1395-2023綠色數(shù)據(jù)中心評(píng)價(jià)導(dǎo)則
- DB31/T 1335-2021醫(yī)療機(jī)構(gòu)輸血標(biāo)本運(yùn)送與廢血袋回收管理規(guī)范
- DB31/T 1183-2019特種設(shè)備隱患排查治理實(shí)施指南
- DB31/T 1122-2018城市軌道交通運(yùn)營(yíng)評(píng)價(jià)指標(biāo)體系
- DB31/T 1105-2018城市軌道交通車站服務(wù)中心服務(wù)規(guī)范
- DB31/T 1103.1-2018商務(wù)信用評(píng)價(jià)方法第1部分:酒類零售企業(yè)
- DB31/T 1050-2017豬偽狂犬病凈化規(guī)程
- DB31/ 357-2015在用點(diǎn)燃式發(fā)動(dòng)機(jī)輕型汽車簡(jiǎn)易瞬態(tài)工況法排氣污染物排放限值
- 2024年棗莊滕州市中小學(xué)招聘教師筆試真題
- 直擊要點(diǎn)2025年入團(tuán)考試試題及答案
- 基于AI的管道防腐監(jiān)測(cè)系統(tǒng)研究與應(yīng)用-洞察闡釋
- 酒店賓館裝修合同協(xié)議書
- 2025-2030年中國(guó)腰果酚行業(yè)競(jìng)爭(zhēng)格局展望及投資前景研究報(bào)告
- 2025年天津市高三高考模擬英語(yǔ)試卷試題(含答案詳解)
- 2024年四川巴中事業(yè)單位招聘考試真題答案解析
- 以好家風(fēng)涵養(yǎng)好作風(fēng)-新時(shí)代領(lǐng)導(dǎo)干部家風(fēng)建設(shè)專題課件
- 2025年甘肅省武威第二十中學(xué)生物七年級(jí)下冊(cè)新人教版期中模擬練習(xí)題(含答案)
- 銀行客戶經(jīng)理培訓(xùn)課件
- 藥品理化檢驗(yàn)培訓(xùn)
評(píng)論
0/150
提交評(píng)論