文档详情

《高级语言C++程序设计(第一版)-第六章.》.pdf

发布:2016-01-06约2.89万字共28页下载文档
文本预览下载声明
6.1 选择排序算法 145 第六章 指针,引用与动态内存分配 在第四章,我们曾引入数组类型,它与本章介绍的指针和引用类型是C++ 语言提供的三种导出类型,正确灵活地使用数组,指针和引用类型,是设计高 质量的C++程序所必经掌握的技术。 C++程序中所处理的数据主要以变量(和对象)的形式出现。每个变量有 两个最主要的属性,那就是变量的内容和地址。例如: int a=3,b=5,c; c=a+b; 在上面语句中,变量a,b,c 已被赋值。在它们被重新赋值或被释放之前,变 量名 a,b,c 就代表着它们的内容,即整型数 3 ,5 ,8 。由变量 a,b,c 参加的任何 运算,都是对它们的值3 ,5 ,8 进行的运算。 另一方面,C++语言也为用户对于变量所占空间的地址提供了进行操作的 机制,这就是指针。指针不是一种独立的数据类型,而是一种导出数据类型。 我们首先通过实例来说明指针的使用。 6.1选择排序算法 把已经存在一个数组里的n 个数按从大到小的顺序排列好: //program6_1.cpp #includestdlib.h #includeiostream.h #includeiomanip.h void ssort(float *,int ); void main(void){ const int n=500; int i; float list[n],*pf; for(i=0; in; i++) list[i]=rand( ); 146 第六章 指针,引用与动态内存分配 pf=list[0]; ssort(pf,n); //后面的程序省略 } void swap1(float *a,float *b){ float temp; temp=*a; *a=*b; *b=temp; } void ssort(float *a,int m){ int i,j,index; float elem; for(i=0; im- 1; i++){ elem=*(a+i); index=i; for(j= i+ 1; jm; j++) if(*(a+j)elem){ elem=*(a+j); index=j; } swap1(a+i,a+index); } } 说明: 这个程序重点是介绍函数 swap1( )和 ssort( ) 的设计。主程序中关于数组 list[n] 中数据的获得及排序后的处理,我们可不予关心。 函数swap1( ) 的定义中使用了指针型的变量作参数。参数a,b 是float 型的 指针变量,即它们的值应是浮点型的地址。 在 swap1( ) 的调用语句中,实参 a+i,a+index,其中 a 为 float 型的指针, i,index 为整型变量,C++ 语言允许指针变量+/-整数,其结果仍为指针。即 a+i,a+index 应表示数组List[ ] 中a 指向的元素后面的元素变量的地址。 在函数swap1( ) 中使用了*a 和*b,这里符号 ‘*’不是乘法运算符,而是表 示指针变量(a 或b )所指向的那个变量。例如: int n=4, *p;
显示全部
相似文档