- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
修饰符的使用-清华大学出版社
【例3.1】编写顺序结构C程序,交换两个整型变量的值。 【算法分析】假设需要交换数值的变量用a、b表示。交换两个变量的内存值, 通常需要借助于第三个临时变量,分三步实现:第一步,将a的值(设a为3)赋于 临时变量temp;第二步,将b的值(设b为5)赋于a;第三步,将临时变量temp的 值赋于b。图3.1描述了交换过程。 1.数学库函数 5.2 用if和goto语句构造循环 * 第9章 指针 9.8 指针数组和多级指针 指针数组常用来构造字符指针数组,以指向不同的字符串。使用字符指针数组处理多个字符串,主要有两个好处: (1)可以避免使用二维数组存放多个字符串时可能造成的空间浪费。 例如,图书馆中若干书名,若采用二维字符数组加以存放(如图9.21),则为了保证能存放最长串,需按最长串的长度定义数组的列数,显然用二维字符数组存放多个不等长的串时,不可避免地造成数组空间的浪费。 9.8.1 指针数组 2.指针数组的应用 图9.21 用二维字符数组存放多个串示意图 * 第9章 指针 9.8 指针数组和多级指针 为解决上述问题,可以分别定义字符串,然后用指针数组中的指针分别指向这些字符串(图9.22)。由于存放每个字符串的数组和字符串等长,可避免空间浪费。 9.8.1 指针数组 2.指针数组的应用 图9.22 用二维字符数组存放多个串示意图 (2)使用指针数组指向多个串,还便于编写对这些串进行处理的程序。比如对串的排序,可通过交换指针来实现,从而避免交换串本身,提高了字符串排序速度。因而字符指针数组是一种高效的表示方法。 * 第9章 指针 9.8 指针数组和多级指针 9.8.1 指针数组 【例9.34】编程将图9.22中所示的5个字符串排序输出。 #include stdio.h #include string.h void main() { void sort(char *name[],int n); /*声明sort函数*/ void print(char *name[],int n); /*声明print函数*/ char *name[]={“Follow me”,”BASIC”,”Great Wall”,”FORTRAN”,”Computer design”}; /*指针数组name指向了5个待排序的串*/ sort(name,5); /*调用sort对name所指的5个串进行排序*/ print(name,5); / *输出排序后的5个串*/ } void print(char *name[],int n) { int i; for(i=0; in;i++) printf(“%s\n”,name[i]); } * 第9章 指针 9.8 指针数组和多级指针 9.8.1 指针数组 【例9.34】编程将图9.22中所示的5个字符串排序输出。 接上页: void sort(char *name[],int n) { char *temp; int i,j,k; for( i=0; i=n-2; i++) { k=i; for(j=i+1;j=n-1;j++) if(strcmp(name[j],name[k])0) k=j; if(k!=i) { temp=name[i]; name[i]=name[k] ; name[k]=temp;} } /*用选择法进行排序,交换name中的指针使其有序指向*/ } * 第9章 指针 9.8 指针数组和多级指针 9.8.1 指针数组 【分析】main函数中指针数组name的5个元素,其初值分别指向了“Follow me”、”BASIC”、......”Computer design”5个大小不等的串,见图9.22。sort函数的作用是对字符串排序,其用数组名name接收实参传递的name数组的首地址,因此,形参name数组和实参name数组指的是同一数组。sort函数使用选择法对字符串排序,但排序过程中交换的不是各个串本身,而是交换指向串的指针。执行完sort函数后,name数组中的指针将有序地指向由小到大的各个字符串,如图9.23所示。 图9.23 name指针数组对串的有序指向 * 第9章 指针 9.8 指针数组和多级指针 例如:int **pi; /*pi是二级整型指针变量,它所指最终目标变量是整型*/ char **ci; /*ci是二级字符型指针变量,它所指最终目标变量是字符型*/ 如果一个指针变量存放的是
文档评论(0)