- 1、本文档共802页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 方法3:实参是数组名,形参是指针变量。 void sort( int *x, int n) { int i,j, t; for(i=0;in-1;i++) { for(j=i+1;jn;j++) if(*(x+i)*(x+j)) { t=*(x+i); *(x+i)=*(x+j); *(x+j)=t;} } } 实参是指针 main( ) { int i, a[10]; void sort( ); for(i=0;i10;i++) scanf(%d”,a[i]); sort(a,10); for(i=0; i10 ;i++) printf(%d , a[i]); } 形参是指针 实参是数组名 * 方法4:实参和形参都是指针变量。 void sort( int*x, int n) { int i,j, t; for(i=0;in-1;i++) { for(j=i+1;jn;j++) if(*(x+i)*(x+j)) { t=*(x+i); *(x+i)=*(x+j); *(x+j)=t;} } } 实参是指针 main( ) { int *p, i, a[10]; void sort( ); p=a; for(i=0;i10;i++) scanf(%d,p++); p=a; sort(p,10); for(p=a, i=0; i10 ;i++) printf(%d, *p++); } 实参也是指针 形参是指针 返回指针的函数定义形式: 一般形式: 类型说明符 *函数名([形式参数表]) {[说明部分] 语句 } 9.4.3 返回指针的函数 一个函数可以带回一个整型值、字符值、实型值等,也可以带回指针型数据,即地址。 表示函数的返回值是一个指针,其指向的数据类型由函数名前的类型说明符确定 在此多了一个*符号,表示返回地址 如 int * a(int x , int y); 返回的指 针指向整 型变量 函数a 的形参 函数名, 调用它以后, 能得到一个 指针(地址) char *str(char s[], char x) { int i=0; while(s[i]!=xs[i]!=\0) i++; return (s[i]); } 返回的是x在s中第一次出现的地址 例:在给定的字符串s中寻找一个特定的字符x,若找到x,则返回x在s中第一次出现的地址,并把s中该字符和该字符之前的字符按逆序输出。 while(*s+i!=x*(s+i)!=\0) i++; s+i 指针变量做形参*s #include ″stdio.h″ main( ) {char s[10], *p, x, *str( ); gets(s); x=getchar( ); p=str(s,x); if(*p) {printf(″%c″,*p); do {p - -; printf(″%c″,*p); }while(p-s); } else printf(″char %c not found″, x); } 输入一个字符串给s 输入一个特定字符给 x 调用返回指针的函数,将所返回的地址给p 逆序输出过程 函数声明,此例可省略。 s为字符数组的首地址 * 9.4.4函数的指针和指向函数的指针变量 函数指针概念: 可以用指针变量指向整型变量、字符串、数组,也可以指向一个函数。一个函数在编译时被分配给一个入口地址,称为函数的指针。如果用一个指针变量来标识函数的入口地址,则称这个指针变量为指向函数的指针变量。 即:用一个指针变量指向一个函数,然后通过该指针变量调用此函数。 先回顾一下以前函数的调用情况: 举例:求a和b中的大者。 main ( ) { int max( int,int); int a,b,c; scanf(“%d,%d”,a,b);
文档评论(0)