C语言字符型数组ppt,C语言第13讲指针与字符串(字符数组).ppt
C語言第13講指針與字符串(字符數組).ppt
6.2.3 指針與字符串(字符數組) C語言用字符數組存放字符串。 字符數組元素個數確定,一般用下標控制循環。 字符串有效字符個數由0確定,用結束符0控制循環。, 字符數組名和字符串的值都是地址(字符串的首地址 ,1、字符串的訪問方法 直接引用字符串,char *chp,ch ”abcde”; /*定義字符指針和字符數組*/ chpch; /*指針指向字符數組*/ putchar *chp2; /*通過指針引用數組元素*/ printf“s,s”,ch1,chp2;, 引用字符數組,char *chp; /*說明字符指針*/ chp“Hello”; /*指針指向字符串*/ putschp; /*通過指針引用字符串*/,字符指針可直接指向字符串char *chp“Hello”;,輸出 ,無名一維字符數組 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,運行程序 abcdef c, ,2000H,str,c,strprintf“s”,ps; 或 putsps,The new string is abdef,字符指針變量與字符數組的區別,字符指針與字符數組兩者均可存儲和運算字符串。 主要區別 存儲格式不同 字符指針變量中存放的是字符串的首地址2字節;而字符數組中存放的是整個字符串一個數組元素存放一個字符)。 性質不同字符數組名是地址常量,不能改變指向首字符; 字符指針是地址變量,可以改變指向不同的字符。 賦值方式不同,字符指針,char *ps“Hello”;char *ps; ps“Hello”;,字符數組,char st “Hello”;,,char st80; st“Hello” 或st “Hello”,用循環逐個賦值或用strcpy函數賦值,例 統計字符串中的各元音字母的個數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; ,循環遍歷數組元素,判斷字母。,判斷字符串是否結束,2. 字符串指針做函數參數(見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; ,去掉該句,對程序結果是否有影響,例 編寫函數,用指針進行字符串的復制6.2.4 指針數組,指針是存放其它數據對象地址的變量。也可以構成數組。每個數組元素均為一個指針變量,且在內存中連續存放。,1. 指針數組定義,格式 type *數組名元素個數;,int *p 4 ;,定義(說明)p是含有4個元素的指針數組,每個元素都是 一個指向整型變量的指針(二級指針) 。,數組名p為數組的首地址。,使用前必須讓各元素指向對象。,int i, a34, *p3; fori0;i3;i p i a i ; *pij2; /*通過指針數組引用數組元素aij*/,2、用指針數組處理多字符串,例用指針數組對字符串進行排序。,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; 循環實現排序,ps,2、指針數組訪問二維數組,通過指針數組輸出數組元素的值, 分析運行結果。,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,數組a的二維結構,pa1,pa2,a0,a1,a26.3 指針與函數,6.3.1 指向函數的指針 概念函數為程序實體,其代碼占據連續的內存地址,其首地址 稱為函數的入口地址,用函數名表示。C語言通過指針指向函數 的入口地址(函數名),也可以實現函數的調用。cmaxa,b;,int maxint x, int y return xyxy; ,2400H函數指針變量的定義,type *p ;,函數的類型。,指針變量名,函數,使用步驟, 定義函數fname和指向函數的指針p; 指針指向函數; pfname; 通過指針引用函數。 格式* p實參表;, , ,main ,舉例求a、b的最大值。,include int lmaxint,int; void mainvoid int a,b,c; int * funp ; funplmax; scanf“d,d”, ,說明指向函數的指針。,指針指向函數。funp,lmax,通過指針引用函數。,lmax2100H2100H,6.3.2 返回指針的函數,概念函數可以返回一個值,也可以返回一個地址(指針),如果函數返回指針,稱為返回指針的函數。,定義 type *函數名(形參表) /* 函數體 */ ,int *maxint a, int b,注意 int *p 和 int *p 的區別 int *p 是定義一個 變量(p是一個指向函數入口的指針變量); int *p 則是定義一個函數(p是一個返回值為指針的函數),它還有函數體部分。,例 輸入一個17之間的整數,輸出對應的星期名。,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”, ,定義一個指針型函數, 其返回值指向一個字符串,形參 n 為星期名對應的整數,exit為一庫函數,exit1有錯退出程序,exit0正常退出,name為一指針數組,每個元素均為指針變量。運行結果, Day No 2 Day No 2 Tuesday,6.3.3 main函數的參數如DOS命令Ctest aa bb cc,可執行文件名,命令參數,主函數main也可以帶參數,由于main不能被其他函數調用,故無法在程序內部取得實參值。它的參數來自dos提示符命令行如用命令行運行編譯連接好的.文件,實參就是命令行輸入的字符串。主函數一般有兩個參數。,void mainint argc, char *argv 函數體 ,整型變量。存放命令行字符串的個數以空格分隔 。,指向字符的指針數組。分別存放各字符串參數的地址。,舉例編程顯示命令行輸入的參數。include void mainint argc, char *argv int i; printf“argcdn“, argc; fori0; iargc; i printf“argvdsn “,i, argv i ; ,test How are you 該程序名應為test.c,編譯、連接后生成test.,C,argc 4,舉例在字符串中查找特定的字符。,include include char *lstrchar char * , char ; void main void char c , *p , str80 ; gets str ; scanf “ c ” , ,返回指針的函數。,指向空, 課堂作業, include main int i; char s5,*p; fori0; is;p printf“s,cn“,p,*p; ,寫出下列程序運行結果。, 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; , 思考題 作業題,p188習題 一、選擇題 720。 二、填空題 47。 三、程序運行題13。 四、程序填空題2、4。 五、程序設計題 2、3、6。,上機驗證 p178 例 6.19 ,分析行指針定義*pn和指針數組定義*pn的異同點,進一步理解和記憶二維數組中數組元素和其地址的表示方法。,編程題,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“, ,用指針編寫函數分別求二維方陣主、輔對角線上元素的和 sum1 和 sum2。 要求在主函數中輸入a44,通過函數用指針求a44主、輔對角線元素的和。 見 ktzyss.c,
總結
以上是生活随笔為你收集整理的C语言字符型数组ppt,C语言第13讲指针与字符串(字符数组).ppt的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: w ndows10应用商店游,来了,微软
- 下一篇: Android m 自定义下拉菜单,An