




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第五章
指針進階第1節指針數組及多級指針1程序解析2指針數組的概念3指向指針的指針4用指針數組處理多個字符串1程序解析【例1】已知奧運五環的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]);對指針數組元素的操作和對同類型指針變量的操作相同
繼續執行: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,用指向指針的指針實現。
#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,用指向指針的指針實現。
pccolor&color[0]*pccolor[0]*(pc+i)color[i]**pc*(*pc)*color[0]:‘r’1.指針數組與二維數組二維字符數組charccolor[][7]={"red","blue","yellow","green",“black"};4用指針數組處理多個字符串使用指針數組更節省內存空間指針數組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.動態輸入多個字符串例6輸入一些有關顏色的單詞,每行一個,以#作為輸入結束標志,再按輸入的相反次序輸出這些單詞。其中單詞數小于20,每個單詞不超過15個字母(用動態分配內存的方法處理多個字符串的輸入)。#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));/*動態分配*/
strcpy(color[n],
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 租船回租協議書
- 谷歌租賃協議書
- 員工非正常死亡協議書
- 花圃認養協議書
- 聯養購買協議書
- 老公拒賭協議書
- 恒大悅瓏灣認籌協議書
- 考證服務協議書
- 電氣維護費合同協議書
- 比亞迪維修試車協議書
- 2025年中國低溫等離子體環境消毒機市場調查研究報告
- 2025法語DELFA15級閱讀理解試卷及答案
- 2025年全球經濟策略試題及答案
- 2025年絕緣紙原紙行業深度研究報告
- 直擊要點2025年入團考試試題及答案
- 基于AI的管道防腐監測系統研究與應用-洞察闡釋
- 酒店賓館裝修合同協議書
- 2025-2030年中國腰果酚行業競爭格局展望及投資前景研究報告
- 2025年天津市高三高考模擬英語試卷試題(含答案詳解)
- 2024年四川巴中事業單位招聘考試真題答案解析
- 以好家風涵養好作風-新時代領導干部家風建設專題課件
評論
0/150
提交評論