C语言字符型数组ppt,C语言第13讲指针与字符串(字符数组).ppt
C語(yǔ)言第13講指針與字符串(字符數(shù)組).ppt
6.2.3 指針與字符串(字符數(shù)組) C語(yǔ)言用字符數(shù)組存放字符串。 字符數(shù)組元素個(gè)數(shù)確定,一般用下標(biāo)控制循環(huán)。 字符串有效字符個(gè)數(shù)由0確定,用結(jié)束符0控制循環(huán)。, 字符數(shù)組名和字符串的值都是地址(字符串的首地址 ,1、字符串的訪問(wèn)方法 直接引用字符串,char *chp,ch ”abcde”; /*定義字符指針和字符數(shù)組*/ chpch; /*指針指向字符數(shù)組*/ putchar *chp2; /*通過(guò)指針引用數(shù)組元素*/ printf“s,s”,ch1,chp2;, 引用字符數(shù)組,char *chp; /*說(shuō)明字符指針*/ chp“Hello”; /*指針指向字符串*/ putschp; /*通過(guò)指針引用字符串*/,字符指針可直接指向字符串char *chp“Hello”;,輸出 ,無(wú)名一維字符數(shù)組 0,例1 輸出字符串,include void main char s “computer”, *pss ; while*ps0 putchar*ps; ps; ,main char str80, *p, ch; int i0; pstr; getsp; chgetchar; for ; *p0;p if*pch stri*p; stri0; printf“The new string issn”,str; ,例2在輸入的字符串中刪除指定的字符2000H,p,0,ch0,i,運(yùn)行程序 abcdef c, ,2000H,str,c,strprintf“s”,ps; 或 putsps,The new string is abdef,字符指針變量與字符數(shù)組的區(qū)別,字符指針與字符數(shù)組兩者均可存儲(chǔ)和運(yùn)算字符串。 主要區(qū)別 存儲(chǔ)格式不同 字符指針變量中存放的是字符串的首地址2字節(jié);而字符數(shù)組中存放的是整個(gè)字符串一個(gè)數(shù)組元素存放一個(gè)字符)。 性質(zhì)不同字符數(shù)組名是地址常量,不能改變指向首字符; 字符指針是地址變量,可以改變指向不同的字符。 賦值方式不同,字符指針,char *ps“Hello”;char *ps; ps“Hello”;,字符數(shù)組,char st “Hello”;,,char st80; st“Hello” 或st “Hello”,用循環(huán)逐個(gè)賦值或用strcpy函數(shù)賦值,例 統(tǒng)計(jì)字符串中的各元音字母的個(gè)數(shù)P182 例6.15,include void mainvoid char str80,*p; int a0,e0,i0,o0,u0; getsstr; forpstr;*p0a case A a; break; case e case E e; break; case i case I i; break; case o case O o; break; case u case U u; printf“a3dne3dni3dno3dnu3dn“,a,e,i,o,u; ,循環(huán)遍歷數(shù)組元素,判斷字母。,判斷字符串是否結(jié)束,2. 字符串指針做函數(shù)參數(shù)(見P183 表6-2),include void cpystrchar *s1, char *s2 while*s20 *s1*s2; *s10 printf“str2 sn“,str2; printf“str1 sn“,str1; cpystrstr1,str2; printf“str2 sn“,str2; printf“str1 sn“,str1; ,去掉該句,對(duì)程序結(jié)果是否有影響,例 編寫函數(shù),用指針進(jìn)行字符串的復(fù)制6.2.4 指針數(shù)組,指針是存放其它數(shù)據(jù)對(duì)象地址的變量。也可以構(gòu)成數(shù)組。每個(gè)數(shù)組元素均為一個(gè)指針變量,且在內(nèi)存中連續(xù)存放。,1. 指針數(shù)組定義,格式 type *數(shù)組名元素個(gè)數(shù);,int *p 4 ;,定義(說(shuō)明)p是含有4個(gè)元素的指針數(shù)組,每個(gè)元素都是 一個(gè)指向整型變量的指針(二級(jí)指針) 。,數(shù)組名p為數(shù)組的首地址。,使用前必須讓各元素指向?qū)ο蟆?int i, a34, *p3; fori0;i3;i p i a i ; *pij2; /*通過(guò)指針數(shù)組引用數(shù)組元素aij*/,2、用指針數(shù)組處理多字符串,例用指針數(shù)組對(duì)字符串進(jìn)行排序。,include void mainvoid int i, j ; char *ps “Get“, “Put“, “Time“, “Date“, *p ; printf“排序前字符串 n“; fori0;i0 ppsi; psipsj; psjp; printf“排序后字符串 n“; fori0;i4;i putspsi; 循環(huán)實(shí)現(xiàn)排序,ps,2、指針數(shù)組訪問(wèn)二維數(shù)組,通過(guò)指針數(shù)組輸出數(shù)組元素的值, 分析運(yùn)行結(jié)果。,include void main int i , j; int a33 1,2,3, 4,5,6, 7,8,9 ; int *pa3 a0, a1, a2 ; int *pa0; for i0 ; i3 ; i for j0; j3; j printf “ 5d“, paij ; printf “n“ ; fori0;i3;i printf“d,d,dn“,ai2-i,*ai,**aii; fori0;i3;i printf“d,d,dn“,*pai,pi,*pi; ,pa0,數(shù)組a的二維結(jié)構(gòu),pa1,pa2,a0,a1,a26.3 指針與函數(shù),6.3.1 指向函數(shù)的指針 概念函數(shù)為程序?qū)嶓w,其代碼占據(jù)連續(xù)的內(nèi)存地址,其首地址 稱為函數(shù)的入口地址,用函數(shù)名表示。C語(yǔ)言通過(guò)指針指向函數(shù) 的入口地址(函數(shù)名),也可以實(shí)現(xiàn)函數(shù)的調(diào)用。cmaxa,b;,int maxint x, int y return xyxy; ,2400H函數(shù)指針變量的定義,type *p ;,函數(shù)的類型。,指針變量名,函數(shù),使用步驟, 定義函數(shù)fname和指向函數(shù)的指針p; 指針指向函數(shù); pfname; 通過(guò)指針引用函數(shù)。 格式* p實(shí)參表;, , ,main ,舉例求a、b的最大值。,include int lmaxint,int; void mainvoid int a,b,c; int * funp ; funplmax; scanf“d,d”, ,說(shuō)明指向函數(shù)的指針。,指針指向函數(shù)。funp,lmax,通過(guò)指針引用函數(shù)。,lmax2100H2100H,6.3.2 返回指針的函數(shù),概念函數(shù)可以返回一個(gè)值,也可以返回一個(gè)地址(指針),如果函數(shù)返回指針,稱為返回指針的函數(shù)。,定義 type *函數(shù)名(形參表) /* 函數(shù)體 */ ,int *maxint a, int b,注意 int *p 和 int *p 的區(qū)別 int *p 是定義一個(gè) 變量(p是一個(gè)指向函數(shù)入口的指針變量); int *p 則是定義一個(gè)函數(shù)(p是一個(gè)返回值為指針的函數(shù)),它還有函數(shù)體部分。,例 輸入一個(gè)17之間的整數(shù),輸出對(duì)應(yīng)的星期名。,char *day_nameint n char *name “Illegal day”,”Monday”,”Tuesday”,”Wednesday”, “Thursday”,”Friday”,”Saturday”,”Sunday”; return n7 name0 namen ; include main int i; printf “ Day No n”; scanf “d”, ,定義一個(gè)指針型函數(shù), 其返回值指向一個(gè)字符串,形參 n 為星期名對(duì)應(yīng)的整數(shù),exit為一庫(kù)函數(shù),exit1有錯(cuò)退出程序,exit0正常退出,name為一指針數(shù)組,每個(gè)元素均為指針變量。運(yùn)行結(jié)果, Day No 2 Day No 2 Tuesday,6.3.3 main函數(shù)的參數(shù)如DOS命令Ctest aa bb cc,可執(zhí)行文件名,命令參數(shù),主函數(shù)main也可以帶參數(shù),由于main不能被其他函數(shù)調(diào)用,故無(wú)法在程序內(nèi)部取得實(shí)參值。它的參數(shù)來(lái)自dos提示符命令行如用命令行運(yùn)行編譯連接好的.文件,實(shí)參就是命令行輸入的字符串。主函數(shù)一般有兩個(gè)參數(shù)。,void mainint argc, char *argv 函數(shù)體 ,整型變量。存放命令行字符串的個(gè)數(shù)以空格分隔 。,指向字符的指針數(shù)組。分別存放各字符串參數(shù)的地址。,舉例編程顯示命令行輸入的參數(shù)。include void mainint argc, char *argv int i; printf“argcdn“, argc; fori0; iargc; i printf“argvdsn “,i, argv i ; ,test How are you 該程序名應(yīng)為test.c,編譯、連接后生成test.,C,argc 4,舉例在字符串中查找特定的字符。,include include char *lstrchar char * , char ; void main void char c , *p , str80 ; gets str ; scanf “ c ” , ,返回指針的函數(shù)。,指向空, 課堂作業(yè), include main int i; char s5,*p; fori0; is;p printf“s,cn“,p,*p; ,寫出下列程序運(yùn)行結(jié)果。, include int fint *a,int n ifn1 return *afa1,n-1; else return *a; void main int aa101,2,3,4,5,6,7,8,9,10,s; sfaa1,4; printf“dn“,s; , 思考題 作業(yè)題,p188習(xí)題 一、選擇題 720。 二、填空題 47。 三、程序運(yùn)行題13。 四、程序填空題2、4。 五、程序設(shè)計(jì)題 2、3、6。,上機(jī)驗(yàn)證 p178 例 6.19 ,分析行指針定義*pn和指針數(shù)組定義*pn的異同點(diǎn),進(jìn)一步理解和記憶二維數(shù)組中數(shù)組元素和其地址的表示方法。,編程題,include define N 3 void ssint c3,int *s1,int *s2; void mainvoid int aNN,bN; int i,j,k,sum1,sum2; fori0;iN;i forj0;jN;j scanf“d“, ,用指針編寫函數(shù)分別求二維方陣主、輔對(duì)角線上元素的和 sum1 和 sum2。 要求在主函數(shù)中輸入a44,通過(guò)函數(shù)用指針求a44主、輔對(duì)角線元素的和。 見 ktzyss.c,
總結(jié)
以上是生活随笔為你收集整理的C语言字符型数组ppt,C语言第13讲指针与字符串(字符数组).ppt的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: w ndows10应用商店游,来了,微软
- 下一篇: Android m 自定义下拉菜单,An