- 1、本文档共102页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C程序设计与实践 第7章(课件).ppt
推荐资料 更多图书信息请见星图书业:/ 计算机各级在线考试试题见前程在线考试网:/ 函数功能:在内存中分配一大块连续的存储空间,这块空间由n个小块空间组成,每小块空间的大小由参数size提供,size的数据单位是字节,函数的返回值是这一大块存储空间的首地址。 “数据类型说明符”表示该空间将存放数据的类型。 (数据类型说明符 *)表示把返回的首地址值强制转换为该数据类型的指针。 calloc函数与malloc 函数的作用基本相同,多数情况下calloc函数可以用malloc 函数代替: (数据类型说明符 *) calloc(n,size) 可以替换为: (数据类型说明符 *) malloc(n*size) 同样,多数情况下malloc函数可以用calloc函数代替: (数据类型说明符 *) malloc(size) 可以替换为: (数据类型说明符 *) calloc(1,size) 但是,两者之间略有微小差别,用calloc分配的空间一般会做初始化的处理,即初始化为0。 例7.22 calloc函数与malloc 函数比较。分别用calloc函数和malloc 函数申请存放两个整数的空间,然后直接输出这两个空间中的值,比较输出结果。 #include stdio.h #include malloc.h ? void main() { int *mint, *cint; ? mint = (int *) malloc(8); printf(”%d %d\\n”, mint[0], mint[1]); cint = (int *) calloc(2, 4); printf(”%d %d\\n”, cint[0], cint[1]); } 程序运行结果如图7-10所示。 图7-10 例7.22程序的输出结果 内存释放函数free 函数调用形式: free(void *ptr); 函数功能: 释放由malloc或calloc函数分配的存储空间,ptr可以是任何类型的指针变量,它指向要释放空间的首地址。 7.8 本章小结 7.8.1 有关指针的数据类型小结 7.8.2 指针运算小结 指针的各种运算归纳总结如下: 1.指针变量加(减)一个整数 例如:p++、p--、p+i、p-i、p += i、p -= i等 一个指针变量加(减)一个整数是将该指针变量的原值(是一个地址)和它指向的对象所占用的内存单元字节数相加(减),而不是将原地址值加(减)一 定义 含 义 int i; 定义整型变量i int *pint 定义pint为指向整型数据的指针变量 int a[n]; 定义数组a,它有n个整型元素 int f(); 定义f为返回整型函数值的函数 int *p(); 定义p为返回一个指针的函数,该指针指向整型数据 个整数。 2.指针变量赋值 指针变量赋值将一个变量的地址赋给一个指针变量。 p = a;(将变量a的地址赋给p) p = array; (将数组array的首地址赋给p) p = array[i]; (将数组array第i个元素的地址赋给p) p1 = p2; (p1和p2都是指针变量,将p2的值赋给p1) 注意:不能为指针变量赋常量值,例如:p=20000; 3.空指针 指针变量可以有空值NULL,即该指针变量不指向任何变量,p= NULL;其作用是可以用于判断指针变量是否正在指向一个有效地存储空间。 4.两个指针变量可以相减 如果两个指针变量指向同一个数组的元素,则两个指针变量值之差的绝对值就是两个指针之间的元素个数。 5.两个指针变量比较 如果两个指针变量指向同一个数组的元素,则两个指针变量可以进行比较。指向前面的元素的指针变量“小于”指向后面的元素的指针变量。 练习七 1.用指针方法求出一维数组中的最大值。 2.用指针来实现删除字符串中的所有空格。 3.用指针来实现简单判断一个字符串是否是一个合法的电子邮件地址,假设合法的电子邮件地址格式为str1@str2,str1与str2均不为空,并且str2中间至少要包含一个“.”。 4.编写函数判断一个单词是否是回文词。回文词是指从前向后读与从后向前读是完全相同的单词,如:ada。提示:用两个指针分别从前向后与从后向前移动。 5.用指针实现对数组元素从小到大排序的函数。再通过主函数输入数据后,调用该函数测试排序效果,并输出。 6.用指针实现对数组元素折半查找的函数。再通过主函数输入数据后,调用该函数测试查找效果。 例7.16 字符数组和字符串指针 #include stdio.h ? void main() { char s1[] = ”我喜欢C语言!”; char *s2 = ”字符串很好用。”; ? printf(”%s\\n%s\\n”, s1, s2)
您可能关注的文档
- Changxun--LTE初级阶段提速攻略V1.2.pdf
- Chapter 1 Computer Networks and the Internet.doc
- Chapter 1 ENERGY AND COST OPTIMIZATIONS IN WIRELESS SENSOR NETWORKS A SURVEY.pdf
- chapter 1 introduction2015.ppt
- Chapter 11 Business and Technology.ppt.ppt
- CHAPTER 14 Security and Fraud Detection in Mobile and Wireless Networks.pdf
- CHAPTER X COMPUTER-AIDED LEARNING AND USE OF THE INTERNET.pdf
- chapter08 综合计划.pdf
- Chapter6-8.pdf
- Chapter_1_V6.1.ppt
- 第12课 大一统王朝的巩固 课件(20张ppt).pptx
- 第17课 君主立宪制的英国 课件.pptx
- 第6课 戊戌变法 课件(22张ppt).pptx
- 第三章 物态变化 第2节_熔化和凝固_课件 (共46张ppt) 人教版(2024) 八年级上册.pptx
- 第三章 物态变化 第5节_跨学科实践:探索厨房中的物态变化问题_课件 (共28张ppt) 人教版(2024) 八年级上册.pptx
- 2025年山东省中考英语一轮复习外研版九年级上册.教材核心考点精讲精练(61页,含答案).docx
- 2025年山东省中考英语一轮复习(鲁教版)教材核心讲练六年级上册(24页,含答案).docx
- 第12课近代战争与西方文化的扩张 课件(共48张ppt)1.pptx
- 第11课 西汉建立和“文景之治” 课件(共17张ppt)1.pptx
- 唱歌 跳绳课件(共15张ppt内嵌音频)人音版(简谱)(2024)音乐一年级上册第三单元 快乐的一天1.pptx
文档评论(0)