西安交通大学 《C语言程序设计》 课件-第6章.pptxVIP

西安交通大学 《C语言程序设计》 课件-第6章.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机程序设计;第6章 按址操作_指针;授课提纲;校园生活举例;物理地址与逻辑地址;工作举例;提取的相关概念;程序如何使用内存?;内存储器地址与数据;逻辑地址向物理地址变换;;取地址运算;指针的含义;授课提纲;指针变量声明;运算符又称为取地址运算符 用于求出变量的内存地址,例如: double score,*pd; pd=score; //pd指向score变量 int count,*pi=count; //pi指向count变量 char ch,*pc=ch; //pc指向ch变量 float e=2.718,*pf=e; //pf指向e变量 运算符其它运算意义?;;数据、地址和指针的关系;两变量交换函数;分析不交换的原因;;指针的赋值运算 指针的关系运算 指针的算术运算 ;指针的赋值运算;指针的关系运算;指针的算术运算;授课提纲;可以用指针指向数组中每个元素 C++规定单写数组名表示数组的首地址 例如:float a[20],*fp=a; 数组名本身就当作指针常量,等于a[0] 由于数组中的元素在内存中是连续排列存放,可以通过指针±整数来指向任何元素 a[0]?*(fp+0)?fp[0] a[1]?*(fp+1)?fp[1] 原来通过下标存取数组元素,现在可以通过指针来实现,这样更快捷;指针指向整型数组示例;char *ptr, *qtr; char sa [6]=Big; int len=strlen(sa); ptr=sa; qtr=ptr+len; ptr++; cout*ptr; ? ptr+=2; cout*ptr; ?;计算机中处理数组时,实际上将A[i]转换成: *( A + 下标表达式值 ) 即有:A[i] ? *(A+i) 因为数组名表示该数组的首地址,所以: float A[1000],*ptr=A; int i=0; 则有:A[i] ? *(A+i) ? ptr[i] ? *(ptr+i) 因此用指针处理数组及元素是最快捷方式;字符串复制函数;字符串复制函数的实现;算法分析(用指针实现) ①令指针i指向数组首地址,指针j指向最尾元素地址 ②通过指针i、j,交换指向的元素值 ③指针i++,j-- ④重复②、③直到i==j处理完毕为止; 注意N个元素需循环N/2次,N是数组元素的个数。;整数数组逆序函数的实现;指针数组的定义;【例5-24】通过指针数组引用二维数组中的元素;用指针数组实现冒泡排序;交换指针的字符串排序方法;授课提纲;程序中使用的变量、数组和函数必须先声明后使用,编译系统根据声明语句开辟内存空间,因此数据占用的???储空间是固定的。这种内存储器分配方法被称为静态存储分配 动态存储分配(dynamic allocation)是在程序运行过程中随机获得内存存储空间的方法 C++用运算符new和delete实现动态存储分配;运算符new用来申请一个变量所需的内存 指针 = new 类型(初值); 也可为数组申请内存: 指针 = new 类型[元素数]; 运算符delete用于释放先前申请到的存储块 delete 指针; 若要释放数组的空间,必须放一个空的方括号[]在操作符delete和指向该类对象数组的指针之间 int *p = new int [size]; …… delete []p; ;#include iostream using namespce std; int main() { int p[10000]; int n; cout“输入项数(10000): ; cinn; p[0]=0; p[1]=1; coutp[0]endl; coutp[1]endl; for(int i=2; in; i++) { p[i]=p[i-2]+p[i-1]; coutp[i]endl; } return 0; };授课提纲;int mystrcmp(char s1[],char s2[]) //例6-9 { int i = 0; while(s1[i]==s2[i] s1[i]!=0 s2[i]!=0) i++; return s1[i]-s2[i]; };部分字符串比较函数;选择排序与冒泡排序方法较为相似 循环N-1趟 每趟挑选最小元素放到数组“最”左边 举例如下: 初始状态:2 7 2 2 3 1 第一趟: 1 7 2 2 3 2 第二趟: 1 2 7 2 3 2 第三趟: 1

文档评论(0)

逍遥子 + 关注
实名认证
文档贡献者

互联网搬运工

1亿VIP精品文档

相关文档