- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
6.3 字符串与指针 前 言 字符串是通过数组来存放的,因此字符串的表现形式可以是:字符数组与字符指针。 一. 字符数组与字符指针的有关概念(P263-P266:8.4.3) 1. 定义与初始化 假设有如下定义: char s1[20]=ASDFGHJ, *s2=ASDFGHJ; 则:s1 是存放字符串的字符数组,s2 是指向字符串的指针变量。 (a) 字符数组 (b) 字符指针变量 二者区别: 字符数组:由若干个元素组成,每个元素存放字符串的一个字符;对字符数组初始化是把字符串放到数组中;s1 最多可存储 20 个字符; 字符指针:存放的是(char 型数据的)地址;对字符指针初始化是把地址(如字符串常量或字符数组的首地址)赋给指针变量;字符串长度不受限定。 2. 赋初值 ? 对字符数组用赋值语句赋值,只能逐个元素进行,不能对整个数组名赋值,因为数组名是地址常量;字符指针变量可以用赋值语句赋地址。 例:char s1[20]; s1[20]= ASDFGHJ;× s1=ASDFGHJ;× char *s2; s2=ASDFGHJ; √ ? s2 中获得的是ASDFGHJ字符串常量的首地址。在 C/C++中,系统为字符串常量在内存都分配了存储地址(如同字符数组一样处理)。 3. 读入字符串(从键盘) 不能对没有指向的字符指针变量从键盘进行输入操作,因为键盘输入的字符串没有存储地址。 例:char *s2; cins2; × 正确方法:将指针指向有效存储空间(如字符数组)后在输入。 例:char s1[20],*s2; s2=s1; cins2;√ cin*s2;× 二. 指针与一维字符数组(P258-P259) 对字符串中字符的存取,可以用下标方法,也可以用指针方法。 例 1:输入一串字符存储在字符数组中,用指针方式逐一显示字符,并求其长度。 例 3、例 4:P258 例 8.18、8.19(自学) 三. 字符指针作函数参数 1. 参数(实参、形参)的传递方式 P259:说明 实参与形参的对应关系可以有以下 4 种方式:(P263) 实参和形参都用数组名; 实参用数组名,形参用指针变量; 实参和形参都用指针变量; 实参用指针变量,形参用数组名。 注释及例题:P259--P261 例 8.20 函数中指针的灵活用法:P262--P263 的程序改进。 6.4 函数与指针 一. 返回指针值的函数(P274) 指针型函数的概念:P274 前言 定 义 形 式:P274 例及说明:P274 3. 例 1:编写一个函数,从读入的字符 c 开始重新拼接字符串,并在返回主函数后输出。 二. void 指针类型 含义及功能:P287 形式及例:P287 应 用: 动态存储分配机制 通常情况下,在程序运行之前程序中变量的个数和类型是确定的,但在实际应用中无法预见数据需要占用多大的存储空间,因而需要在运行程序时根据具体情况向系统申请分配存储空间,这种分配机制称为动态存储分配。 动态分配存储空间的相关函数(P285) 申请分配动态存储空间 malloc:可用于开辟一个变量 例:malloc(2) calloc:可用于开辟一个数组 例:calloc(6,4) 函数有返回值(地址),所以调用(申请)时要将其赋予一个指针变量。 释放申请的动态存储空间 free 注 释: 包含的头文件: # include stdlib.h malloc 和 calloc 函数返回的是 void 类型指针,在程序中使用时经常需要进行强制类型转换(P287)。 5. 用法示例 ? 例 1:修改如下程序: #include iostream.h void main() { int x; cinx; x=x+100; coutxendl; } 将变量 x 改用申请分配动态存储空间的方法: #include iostream.h #include stdlib.h void main() { int *p; p=(int *) malloc(2); // 申请一个长度为 2 的存储空间, cin*p;将其起始地址赋值给指针 p *p=*p+100; cout*pendl; free(p); // 释放指针 p 指向的存储空间 } ? 例 2:读入 n 个学生的成绩,存储并求出它们的平均值。 p=(float *) calloc(n,sizeof(float);) //申请一个元素个数为n, cinn; float a[n]; × { for (i=0;in;i++,p++)每个元素为浮点型数据长度 {的存储空间(即一个一维数组), cin*p;将其起始地址赋值给指针 p sum+=*p; } cout学生成绩:; p=p-n;
您可能关注的文档
- 《形势与政策教学资料》五十六个民族五十六朵花.ppt
- 1管理学—第一章.ppt
- 2管理学第二章.ppt
- 3管理学第三章.ppt
- 4管理学—第四章.ppt
- 5管理学—第五章.ppt
- 6管理学—第六章.ppt
- 7管理学—第七章.ppt
- 8管理学—第八章.ppt
- 9管理学—第九章.ppt
- c语言期末复习—第五章 总结.docx
- Introduction to Management—CH01.ppt
- Introduction to Management—CH02.ppt
- Introduction to Management—CH04.ppt
- Introduction to Management—CH11.ppt
- Introduction to Management—CH13.ppt
- Introduction to Management—MAG111_2014IT_2014FALL.ppt
- microsoft Word——Numbers.docx
- microsoft Word——Pages.docx
- microsoft Word——Saving2.docx
最近下载
- 垫付协议书范文.docx VIP
- 四年级上第2单元第5课《了解家乡美丽的风景——数据收集工具》课件(内嵌视频+音频).pptx VIP
- 高思学校竞赛数学导引·三年级(详解升级版).pdf VIP
- 中药新药制备工艺研究的思路与方法.docx VIP
- 我国人工智能的发展历程.pptx VIP
- 乳腺癌重建术的护理.pptx
- 小学五年级民间故事10篇.pdf VIP
- 原嘉兴高联丝绸印染有限公司疑似污染地块土壤污染状况初步调查报告.pdf VIP
- 新解读《GB_T 39107-2020消费品中可挥发性有机物含量的测定 静态顶空进样法》.docx VIP
- 腰椎间盘突出症的中医护理PPT模板.pptx VIP
文档评论(0)