版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第五章
指針進階第1節(jié)指針數組及多級指針1程序解析2指針數組的概念3指向指針的指針4用指針數組處理多個字符串1程序解析【例1】已知奧運五環(huán)的5種顏色的英文單詞按一定順序排列,輸入任意一個顏色的英文單詞,從已有顏色中查找并輸出該顏色的位置值,若沒有找到,則輸出“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;}運行結果1Inputacolor:yellowposition:3運行結果2Inputacolor:purpleNotFound
指針數組2指針數組的概念C語言中的數組可以是任何類型,如果數組的各個元素都是指針類型,用于存放內存地址,那么這個數組就是指針數組。一維指針數組定義的一般格式為:類型名*數組名[數組長度]2指針數組的概念inta[10];a是一個數組,它有10個元素每個元素的類型都是整型char*color[5];color是一個數組,它有5個元素每個元素的類型都是字符指針2指針數組的概念char*color[5]={"red","blue","yellow","green","black"
};color是一個數組,它有5個元素每個元素的類型都是字符指針數組元素可以處理字符串對指針數組元素的操作:printf("%s%x\n",color[i],color[i]);對指針數組元素的操作和對同類型指針變量的操作相同
繼續(xù)執(zhí)行:char*tmp;tmp=color[0];color[0]=color[4];color[4]=tmp;
2指針數組的概念
color[0]與color[4]交換后的情況
指針數組操作時:可以直接對數組元素進行賦值(地址值)和引用tmp=color[0];也可以間接訪問和操作數組元素所指向的單元內容
strcpy(color[0],“purple");3指向指針的指針C語言中,指向指針的指針(二級指針)一般定義為:
類型名**變量名
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;二維數組的指針形式a[3][4]:看成是由a[0]、a[1]、a[2]組成的一維數組,而a[0]、a[1]、a[2]各自又是一個一維數組。也即二維數組是數組元素為一維數組的一維數組。a:第0行地址(行地址)a+i:第i行的地址*(a+i)/a[i]:第i行首元素的地址*(a+i)+j/a[i]+j:第i行第j個元素的地址*(*a+i)/a[i][0]:第i行首元素的值*((*a+i)+j)/a[i][j]:第i行首元素的值3指向指針的指針【例3】改寫例1,用指向指針的指針實現(xiàn)。
#include<stdio.h>#include<string.h>intmain(void){inti;char*color[5]={“red”,”blue”,”yellow”,”green”,”black”};/char**pc;/*定義二級指針變量*/charstr[20];
pc=color;/*二級指針賦值*/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指向指針的指針指向指針的指針使用指向指針的指針操作數據3指向指針的指針【例3】改寫例1,用指向指針的指針實現(xiàn)。
pccolor&color[0]*pccolor[0]*(pc+i)color[i]**pc*(*pc)*color[0]:‘r’1.指針數組與二維數組二維字符數組charccolor[][7]={"red","blue","yellow","green",“black"};4用指針數組處理多個字符串使用指針數組更節(jié)省內存空間指針數組char*pcolor[]={"red","blue","yellow","green",“black"};4用指針數組處理多個字符串2.用指針數組操作多個字符串【例4】將5個字符串從小到大排序后輸出。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用指針數組處理多個字符串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用指針數組處理多個字符串例5解密藏頭詩。所謂藏頭詩,就是將一首詩每一句的第一個字連起來,所組成的內容就是該詩的真正含義。編寫程序,輸出一首藏頭詩的真實含義。
一葉輕舟向東流,
帆梢輕握楊柳手,
風纖碧波微起舞,
順水任從雅客悠。4用指針數組處理多個字符串#include<stdio.h>char*change(chars[][20]);intmain(void){inti;char*poem[4]={"一葉輕舟向東流,","帆梢輕握楊柳手,","風纖碧波微起舞,","順水任從雅客悠。"};/*指針數組初始化*/charmean[10];for(i=0;i<4;i++){/*每行取第1個漢字存入mean*/
mean[2*i]=*(poem[i]);mean[2*i+1]=*(poem[i]+1);}
mean[2*i]=’\0’;
printf("%s\n",mean);/*輸出結果*/return0;}4用指針數組處理多個字符串4用指針數組處理多個字符串3.動態(tài)輸入多個字符串例6輸入一些有關顏色的單詞,每行一個,以#作為輸入結束標志,再按輸入的相反次序輸出這些單詞。其中單詞數小于20,每個單詞不超過15個字母(用動態(tài)分配內存的方法處理多個字符串的輸入)。#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));/*動態(tài)分配*/
strcpy(color[n],
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版東莞離婚協(xié)議書模板定制與調解服務合同3篇
- 2024年度農業(yè)防災減災農田承包合同大全3篇
- 開發(fā)區(qū)精裝修房屋租賃合同
- 企業(yè)貨物運輸合同
- 2024年標準離婚合同全文電子版閱讀指南版
- 2024年度專業(yè)錄音棚租賃錄音協(xié)議3篇
- 六盤水師范學院《建筑造型基礎》2023-2024學年第一學期期末試卷
- 8匆匆 教學實錄-2023-2024學年六年級下冊語文統(tǒng)編版
- 精裝修套三租賃合同
- 2024年版標準急救藥品供應合同
- 機器人等級考試一級真題8套
- Axure原型設計基礎教學ppt課件(完整版)
- 220t鍋爐課程設計 李學玉
- 綜合與實踐《我們身體上的“尺”》教材分析
- 電動給水泵液力耦合器基礎知識ppt課件
- 監(jiān)理公司各部門職責
- 253種中藥材粉末顯微鑒別主要特征
- 論辛棄疾詞作的愁情主題及其審美價值
- 新形勢下我國保險市場營銷的現(xiàn)狀、問題及對策
- LTE無線網絡優(yōu)化PPT課件
- 動態(tài)血壓監(jiān)測在社區(qū)高血壓患者管理的意義
評論
0/150
提交評論