C语言_ch08_4_通过指针引用字符串.ppt
《C语言_ch08_4_通过指针引用字符串.ppt》由会员分享,可在线阅读,更多相关《C语言_ch08_4_通过指针引用字符串.ppt(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2022/12/191上一节我们学到了n指针与二维数组指针与二维数组nai*(a+i)naij*(*(a+i)+j)na、a+i、*(a+i)、ai、*(*(a+i)+j)等怎么理解等怎么理解n行指针与列指针行指针与列指针n如何定义一个指向二维数组的指针如何定义一个指向二维数组的指针n行指针:行指针:指向一维子数组,指向一维子数组,int(*p)10;n列指针:指向元素,列指针:指向元素,int*p;n如何向函数传递一个指向二维数组的指针如何向函数传递一个指向二维数组的指针2022/12/192第8章善于利用指针n8.1指针是什么指针是什么n8.2指针变量指针变量n8.3通过指针引用数组通过指
2、针引用数组n8.4通过指针引用字符串通过指针引用字符串n8.4.1字符串的引用方式字符串的引用方式n8.4.2字符指针作函数参数字符指针作函数参数n8.4.3使用字符指针变量和字符数组的比较使用字符指针变量和字符数组的比较n8.5指向函数的指针指向函数的指针n8.6返回指针值的函数返回指针值的函数n8.7指针数组和多重指针指针数组和多重指针n8.8动态内存分配与指向它的指针变量动态内存分配与指向它的指针变量n8.9有关指针的小结有关指针的小结n字符指针字符串(字符指针字符串(char*string)n字符串常量字符串常量nstrcpy源码源码2022/12/1932022/12/194回忆字符
3、串n一串以一串以0结尾的字符在结尾的字符在C语言中被看作字符串语言中被看作字符串n字符串常量字符串常量是是用双引号括起的用双引号括起的以以0结束结束的的一一串字符串字符。n在在程序开始运行时程序开始运行时分配在分配在全局数据区的文字常全局数据区的文字常量区量区,存储在无名数组中。,存储在无名数组中。n相同字符串常量只有一个副本。相同字符串常量只有一个副本。nC语言语言表示字符串的两种表示字符串的两种表示法表示法n字符数组字符数组n字符指针字符指针2022/12/195代码区(code area)操作系统内核区全局数据区堆区heap栈区stack文字常量区未初始化静态变量区已初始化静态变量区低址
4、数据区字符串常量没有初始化的全局变量和静态变量初始化的全局变量和静态变量malloc()free()局部变量函数的二进制码内存分配2022/12/196charstring例n例例8.16intmain()charstring=IloveChina!;printf(%cn,string7);printf(%sn,string);运行时输出:运行时输出:CIloveChina!2022/12/197char*string例n例例8.17intmain()char*string=IloveChina!;printf(%sn,string);n把存放字符串的把存放字符串的无名数组的首地址无名数组的首
5、地址赋给赋给string。nchar*string=IloveChina!;等价于:等价于:char*string;string=IloveChina!;2022/12/198练习n下面各语句中,能正确进行字符串赋值操作的语句是下面各语句中,能正确进行字符串赋值操作的语句是()chars5=ABCDE;chars5=A,B,C,D,E;char*s;s=ABCDE;char*s;scanf(%s,s);chars8;s=ABCDE;nQ:printf(%sn,abc+1);n输出:输出:bc2022/12/1998.4.2字符指针作函数参数n例例8.20用函数调用实现字符串的复制。用函数调用实
6、现字符串的复制。(1)用字符数组作参数。用字符数组作参数。2022/12/1910strcpy函数/*Copiesthestringsrcintothespotspecifiedbydest;assumesenoughroom.目标指针空间必须大于源字符串空间。目标指针空间必须大于源字符串空间。在调用前请确认目标指针空间是否大于源字符串的空间。在调用前请确认目标指针空间是否大于源字符串的空间。*/voidMyStrcpy(chardstStr,charsrcStr)inti=0;while(dstStri=srcStri)!=0)+i;2022/12/1911intmain()chara16=
7、goodgoodstudy;charb16=daydayup;charc30;MyStrcpy(b,a);MyStrcpy(c,“copysuccessfully”);printf(stringa:%snstringb:%sn%sn,a,b,c);return0;2022/12/1912n在在main函数中也可以用字符型指针变量作实参。函数中也可以用字符型指针变量作实参。intmain()chara16=goodgoodstudy;charb16=daydayup;char*pa=a,*pb=b;printf(stringa:%snstringb:%snn,pa,pb);MyStrcpy(pb
8、,pa);printf(copystringatostringbnn);printf(stringa:%snstringb:%sn,pa,pb);2022/12/1913字符指针做形参voidMyStrcpy(char*dst,char*src)while(*dst=*src)!=0)+dst;+src;2022/12/1914n进一步简化进一步简化while(*dst+=*src+);不推荐不推荐等价于等价于while(*dst+=*src+)!=0);推荐推荐n函数体中函数体中while语句也可以改用语句也可以改用for语句:语句:for(;(*dst=*src)!=0;+dst,+src
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 _ch08_4_ 通过 指针 引用 字符串
限制150内