- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[计算机软件及应用]第10章 指针
* 10.4.1 字符指针 字符串有两种实现方法:用字符数组实现和用字符指针实现。这两种方法实际上是一致的。 用字符指针来实现字符串的一般形式为: char *字符指针 用字符指针实现字符串,可以在定义时对指针赋初值,也可在定义之后单独赋值。如: ? char *str=“I love China!”; 或 char *str; str=“I love China!”; 10.4 字符串与指针 * 例10-12: #includestdio.h void copy1(char*,char*); void copy2(char*,char*); void main() { char str1[10],*str2=Hello; char str3[10],*str4=Good Bye; copy1(str1,str2); printf(str1=%s\n,str1); copy2(str3,str4); printf(str3=%s\n,str3); } /*用数组表示法把s2拷贝到s1*/ void copy1(char *s1,char *s2) { int i; for(i=0;s1[i]=s2[i];i++); } /*用指针表示法进行字符串拷贝*/ void copy2(char *s1,char *s2) { for( ; *s1=*s2; s1++,s2++); } 10.4 字符串与指针 * 指向函数的指针指向函数在内存中的地址,即完成函数任务的代码在内存中的起始地址。这个起始地址也可用函数名作为代表,所以函数指针和函数名之间是相通的。 1. 函数指针的定义与引用 函数指针定义的一般形式是: 类型标识符 (*指针变量名)(函数参数表); 其中,类型标识符是指函数返回值的类型;后面函数参数表外的圆括号是函数运算符,它是函数的标志,它括的是函数的参数。(*指针变量名)是用圆括号把“*”号与指针变量限定为一个整体。 10.5 指向函数的指针 * 例如: int (*p)(); 定义p是个指针,它指向某一类函数,这类函数没有参数,函数返回值的类型是整型。 括起指针的圆括号不能省略,如果把它去掉,变成如下形式: int *p(); 例 定义一种函数指针和两个函数: int (*p)(int, int); int max(int,int); float min(float,float); 则: p=max; 是合法的。 p=min; 是不合法的,因为不是同类。 注:为返回整型指针的函数的声明 10.5 指向函数的指针 * 例10-13:求两个整数的商。 #includestdio.h int div(int,int); void main() { int i=9,j=4,(*p)(int,int),k; p=div; k=(*p)(i,j); printf(″i/j=%d\n″,k); } int div(int m, int n) { return m/n; } 这是个非常简单的示意性程序。定义了函数指针p,它所指向的函数有且只有两个整型参数,函数的返回值为整型。 10.5 指向函数的指针 * 2. 指向函数的指针作函数参数 在主调函数中可以通过函数指针直接调用函数,也可以利用函数指针参数间接地调用函数,当用函数指针作形式参数时,作为实参的函数必须和形参保持一致,这个一致主要指函数的参数个数及类型、函数返回值的类型。 例10-14:使用函数指针实现多用途排序,即既能够按升序排列,又能够按降序排列。 10.5 指向函数的指针 * #includestdio.h void bubsort(int*, int, int(*)(int,int)); int ascending( int, int); int descending( int, int); void main() { int a[10]={3,8,6,4,9,7,5,26,19,14}; int n,i; printf(″Enter 1 to sort in ascending,\n″); puts(″Enter 2 to sort in descending:\n″); scnaf(
原创力文档


文档评论(0)